From: Mike G. v. a. <we...@ma...> - 2005-09-10 18:21:11
|
Log Message: ----------- Restored changes that were accidentally clobbered when the gateway changes were checked in. Email now uses post processing to email students. Modified Files: -------------- webwork-modperl/lib/WeBWorK/ContentGenerator/Instructor: SendMail.pm Revision Data ------------- Index: SendMail.pm =================================================================== RCS file: /webwork/cvs/system/webwork-modperl/lib/WeBWorK/ContentGenerator/Instructor/SendMail.pm,v retrieving revision 1.41 retrieving revision 1.42 diff -Llib/WeBWorK/ContentGenerator/Instructor/SendMail.pm -Llib/WeBWorK/ContentGenerator/Instructor/SendMail.pm -u -r1.41 -r1.42 --- lib/WeBWorK/ContentGenerator/Instructor/SendMail.pm +++ lib/WeBWorK/ContentGenerator/Instructor/SendMail.pm @@ -381,40 +381,48 @@ $self->addbadmessage(CGI::p("Can't read merge file $merge_file. No message sent")); return; } ; - - - foreach my $recipient (@recipients) { - #warn "FIXME sending email to $recipient"; - my $ur = $self->{db}->getUser($recipient); #checked - die "record for user $recipient not found" unless $ur; - unless ($ur->email_address) { - $self->addbadmessage(CGI::p("user $recipient does not have an email address -- skipping")); - next; - } - my ($msg, $preview_header); - eval{ ($msg,$preview_header) = $self->process_message($ur,$rh_merge_data); }; - $self->addbadmessage(CGI::p("There were errors in processing user $ur, merge file $merge_file. $@")) if $@; - my $mailer = Mail::Sender->new({ - from => $from, - to => $ur->email_address, - smtp => $ce->{mail}->{smtpServer}, - subject => $subject, - headers => "X-Remote-Host: ".$r->get_remote_host(), - }); - unless (ref $mailer) { - $self->addbadmessage(CGI::p("Failed to create a mailer for user $recipient: $Mail::Sender::Error")); - next; - } - unless (ref $mailer->Open()) { - $self->addbadmessage(CGI::p("Failed to open the mailer for user $recipient: $Mail::Sender::Error")); - next; - } - my $MAIL = $mailer->GetHandle() or $self->addbadmessage(CGI::p("Couldn't get handle")); - print $MAIL $msg || $self->addbadmessage(CGI::p("Couldn't print to $MAIL")); - close $MAIL || $self->addbadmessage(CGI::p("Couldn't close $MAIL")); - #warn "FIXME mailed to ", $ur->email_address, "from $from subject $subject"; - - } + if (@recipients) { + $self->{rh_merge_data} = $rh_merge_data; + $self->{smtpServer} = $ce->{mail}->{smtpServer}; + my $post_connection_action = sub { + my $r = shift; + my $result_message = $self->mail_message_to_recipients(); + $self->email_notification($result_message); + }; + $r->post_connection($post_connection_action) ; + } +# foreach my $recipient (@recipients) { +# #warn "FIXME sending email to $recipient"; +# my $ur = $self->{db}->getUser($recipient); #checked +# die "record for user $recipient not found" unless $ur; +# unless ($ur->email_address) { +# $self->addbadmessage(CGI::p("user $recipient does not have an email address -- skipping")); +# next; +# } +# my ($msg, $preview_header); +# eval{ ($msg,$preview_header) = $self->process_message($ur,$rh_merge_data); }; +# $self->addbadmessage(CGI::p("There were errors in processing user $ur, merge file $merge_file. $@")) if $@; +# my $mailer = Mail::Sender->new({ +# from => $from, +# to => $ur->email_address, +# smtp => $ce->{mail}->{smtpServer}, +# subject => $subject, +# headers => "X-Remote-Host: ".$r->get_remote_host(), +# }); +# unless (ref $mailer) { +# $self->addbadmessage(CGI::p("Failed to create a mailer for user $recipient: $Mail::Sender::Error")); +# next; +# } +# unless (ref $mailer->Open()) { +# $self->addbadmessage(CGI::p("Failed to open the mailer for user $recipient: $Mail::Sender::Error")); +# next; +# } +# my $MAIL = $mailer->GetHandle() or $self->addbadmessage(CGI::p("Couldn't get handle")); +# print $MAIL $msg || $self->addbadmessage(CGI::p("Couldn't print to $MAIL")); +# close $MAIL || $self->addbadmessage(CGI::p("Couldn't close $MAIL")); +# #warn "FIXME mailed to ", $ur->email_address, "from $from subject $subject"; +# +# } } else { $self->addbadmessage(CGI::p("Didn't recognize button $action")); @@ -447,8 +455,12 @@ if ($response eq 'preview') { $self->print_preview($setID); } elsif (($response eq 'send_email')){ - $self->addgoodmessage(CGI::p("Email sent to ". scalar(@{$self->{ra_send_to}})." students.")); - $self->{message} .= CGI::i("Email sent to ". scalar(@{$self->{ra_send_to}})." students."); + my $message = CGI::i("Email is being sent to ". scalar(@{$self->{ra_send_to}})." recipients. You will be notified" + ." when the task is completed. This may take several minutes if the class is large." + ); + $self->addgoodmessage($message); + $self->{message} .= $message; + $self->print_form($setID); } else { $self->print_form($setID); |