[LON-CAPA-cvs] cvs: loncom /interface lonmsg.pm
raeburn
raeburn@source.lon-capa.org
Sun, 04 Jan 2009 16:20:27 -0000
raeburn Sun Jan 4 16:20:27 2009 EDT
Modified files:
/loncom/interface lonmsg.pm
Log:
- Bug 5857.
- Retrieve senderemail addresses from stored addresses in the order: 'permanentemail','critnotification','notification'. Use the first non-blank entry found.
- Check for $env{'form.can_reply'} and $env{'form.reply_to_addr'} when setting 'From:' and 'Reply-to' addresses in e-mail header.
- Set $replytoaddress to 'do-not-reply@'.$hostname if can_reply is 'N'.
Index: loncom/interface/lonmsg.pm
diff -u loncom/interface/lonmsg.pm:1.219 loncom/interface/lonmsg.pm:1.220
--- loncom/interface/lonmsg.pm:1.219 Tue Dec 23 19:22:13 2008
+++ loncom/interface/lonmsg.pm Sun Jan 4 16:20:27 2009
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Routines for messaging
#
-# $Id: lonmsg.pm,v 1.219 2008/12/23 19:22:13 raeburn Exp $
+# $Id: lonmsg.pm,v 1.220 2009/01/04 16:20:27 raeburn Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -422,21 +422,48 @@
sub sendemail {
my ($to,$subject,$body,$to_uname,$to_udom,$user_lh)=@_;
- my %senderemails=&Apache::loncommon::getemails();
my $senderaddress='';
- foreach my $type ('notification','permanentemail','critnotification') {
- if ($senderemails{$type}) {
- $senderaddress=$senderemails{$type};
- }
+ my $replytoaddress='';
+ if ($env{'form.can_reply'} eq 'N') {
+ my $lonhost = $Apache::lonnet::perlvar{'lonHostID'};
+ my $hostname = &Apache::lonnet::hostname($lonhost);
+ $replytoaddress = 'do-not-reply@'.$hostname;
+ } else {
+ my %senderemails;
+ my $have_sender;
+ if ($env{'form.reply_to_addr'}) {
+ my ($replytoname,$replytodom) = split(/:/,$env{'form.reply_to_addr'});
+ if (!($replytoname eq $env{'user.name'} && $replytodom eq $env{'user.domain'})) {
+ if (&Apache::lonnet::homeserver($replytoname,$replytodom) ne 'no_host') {
+ %senderemails =
+ &Apache::loncommon::getemails($replytoname,$replytodom);
+ $have_sender = 1;
+ }
+ }
+ }
+ if (!$have_sender) {
+ %senderemails=&Apache::loncommon::getemails();
+ }
+ foreach my $type ('permanentemail','critnotification','notification') {
+ if ($senderemails{$type}) {
+ ($senderaddress) = split(/,/,$senderemails{$type});
+ last if ($senderaddress);
+ }
+ }
}
$body=
"*** ".&mt_user($user_lh,'This is an automatic e-mail generated by the LON-CAPA system.')."\n".
"*** ".($senderaddress?&mt_user($user_lh,'You can reply to this e-mail'):&mt_user($user_lh,'Please do not reply to this address.')."\n*** ".
- &mt_user($user_lh,'A reply will not be received by the recipient!'))."\n\n".$body;
+ &mt_user($user_lh,'A reply will not be received by the recipient!'))."\n\n".$body;
my $msg = new Mail::Send;
$msg->to($to);
$msg->subject('[LON-CAPA] '.$subject);
- if ($senderaddress) { $msg->add('Reply-to',$senderaddress); $msg->add('From',$senderaddress); }
+ if ($replytoaddress) {
+ $msg->add('Reply-to',$replytoaddress);
+ }
+ if ($senderaddress) {
+ $msg->add('From',$senderaddress);
+ }
if (my $fh = $msg->open()) {
print $fh $body;
$fh->close;