/[notice-sender]/trunk/Nos.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/Nos.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 27 by dpavlin, Mon May 16 16:25:14 2005 UTC revision 29 by dpavlin, Mon May 16 20:58:44 2005 UTC
# Line 16  our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all' Line 16  our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'
16  our @EXPORT = qw(  our @EXPORT = qw(
17  );  );
18    
19  our $VERSION = '0.2';  our $VERSION = '0.3';
20    
21  use Class::DBI::Loader;  use Class::DBI::Loader;
22  use Email::Valid;  use Email::Valid;
23  use Email::Send;  use Email::Send;
24  use Carp;  use Carp;
25    use Email::Auth::AddressHash;
26    use Email::Simple;
27    use Data::Dumper;
28    
29  =head1 NAME  =head1 NAME
30    
# Line 99  sub add_member_to_list { Line 102  sub add_member_to_list {
102          confess "need list name" unless ($arg->{'list'});          confess "need list name" unless ($arg->{'list'});
103    
104          if (! Email::Valid->address($email)) {          if (! Email::Valid->address($email)) {
105                  warn "SKIPPING $name <$email>";                  carp "SKIPPING $name <$email>\n" if ($self->{'verbose'});
106                  return 0;                  return 0;
107          }          }
108    
109          print STDERR "# $name <$email>\n";          carp "# $name <$email>\n" if ($self->{'verbose'});
110    
111          my $lists = $self->{'loader'}->find_class('lists');          my $lists = $self->{'loader'}->find_class('lists');
112          my $users = $self->{'loader'}->find_class('users');          my $users = $self->{'loader'}->find_class('users');
# Line 130  sub add_member_to_list { Line 133  sub add_member_to_list {
133          return $this_user->id;          return $this_user->id;
134  }  }
135    
136  =head2 add_message_to_queue  =head2 add_message_to_list
137    
138  Adds message to one list's queue for later sending.  Adds message to one list's queue for later sending.
139    
140   $nos->add_message_to_queue(   $nos->add_message_to_list(
141          list => 'My list',          list => 'My list',
142          message => 'From: My list <mylist@example.com>          message => 'From: My list <mylist@example.com>
143   To: John A. Doe <john.doe@example.com>   To: John A. Doe <john.doe@example.com>
# Line 147  On success returns ID of newly created ( Line 150  On success returns ID of newly created (
150    
151  =cut  =cut
152    
153  sub add_message_to_queue {  sub add_message_to_list {
154          my $self = shift;          my $self = shift;
155    
156          my $args = {@_};          my $args = {@_};
# Line 155  sub add_message_to_queue { Line 158  sub add_message_to_queue {
158          my $list_name = $args->{'list'} || confess "need list name";          my $list_name = $args->{'list'} || confess "need list name";
159          my $message_text = $args->{'message'} || croak "need message";          my $message_text = $args->{'message'} || croak "need message";
160    
161            warn Dumper($message_text);
162    
163            my $m = Email::Simple->new($message_text) || croak "can't parse message";
164    
165            croak "message doesn't have Subject header\n" unless( $m->header('Subject') );
166    
167          my $lists = $self->{'loader'}->find_class('lists');          my $lists = $self->{'loader'}->find_class('lists');
168    
169          my $this_list = $lists->search(          my $this_list = $lists->search(
# Line 216  sub send_queued_messages { Line 225  sub send_queued_messages {
225                  print "sending message ",$m->message_id," enqueued on ",$m->date," to list ",$m->list_id->name,"\n";                  print "sending message ",$m->message_id," enqueued on ",$m->date," to list ",$m->list_id->name,"\n";
226                  my $msg = $m->message_id->message;                  my $msg = $m->message_id->message;
227    
228                    my $auth = Email::Auth::AddressHash->new(
229                            $m->list_id->name,      # secret
230                            10,                     # hashlen
231                    );
232    
233                  foreach my $u ($user_list->search(list_id => $m->list_id)) {                  foreach my $u ($user_list->search(list_id => $m->list_id)) {
234    
235                            my $to_email = $u->user_id->email;
236    
237                          if ($sent->search( message_id => $m->message_id, user_id => $u->user_id )) {                          if ($sent->search( message_id => $m->message_id, user_id => $u->user_id )) {
238                                  print "SKIP ",$u->user_id->email," message allready sent\n";                                  print "SKIP $to_email message allready sent\n";
239                          } else {                          } else {
240                                  print "\t",$u->user_id->email,"\n";                                  print "\t$to_email\n";
241    
242                                    my $hash = $auth->generate_hash( $to_email );
243    
244                                  my $hdr = "From: " . $u->list_id->name . " <" . $u->list_id->email . ">\n" .                                  my $from = $u->list_id->name . " <" . $u->list_id->email . "+" . $hash . ">";
245                                          "To: " . $u->user_id->full_name . " <". $u->user_id->email. ">\n";                                  my $to = $u->user_id->full_name . " <$to_email>";
246    
247                                    my $m = Email::Simple->new($msg) || croak "can't parse message";
248    
249                                    print Dumper($m);
250    
251                                    $m->header_set('From', $from) || croak "can't set From: header";
252                                    $m->header_set('To', $to) || croak "can't set To: header";
253    
254                                  # FIXME do real sending :-)                                  # FIXME do real sending :-)
255                                  send IO => "$hdr\n$msg";                                  send IO => $m->as_string;
256    
257                                  $sent->create({                                  $sent->create({
258                                          message_id => $m->message_id,                                          message_id => $m->message_id,
# Line 243  sub send_queued_messages { Line 268  sub send_queued_messages {
268    
269  }  }
270    
271    =head2 inbox_message
272    
273    Receive single message for list's inbox.
274    
275     my $ok = $nos->inbox_message($message);
276    
277    =cut
278    
279    sub inbox_message {
280            my $self = shift;
281    
282            my $message = shift || return;
283    
284            my $m = new Email::Simple->new($message);
285    
286    }
287    
288    
289  =head1 EXPORT  =head1 EXPORT
290    
291  Nothing.  Nothing.

Legend:
Removed from v.27  
changed lines
  Added in v.29

  ViewVC Help
Powered by ViewVC 1.1.26