version 1.239.2.3, 2021/12/13 23:54:26
|
version 1.240, 2015/06/18 21:42:37
|
Line 202 use strict;
|
Line 202 use strict;
|
use Apache::lonnet; |
use Apache::lonnet; |
use HTML::TokeParser(); |
use HTML::TokeParser(); |
use Apache::lonlocal; |
use Apache::lonlocal; |
use Mail::Send; |
use MIME::Entity; |
use HTML::Entities; |
use HTML::Entities; |
use Encode; |
use Encode; |
use LONCAPA qw(:DEFAULT :match); |
use LONCAPA qw(:DEFAULT :match); |
Line 231 sub packagemsg {
|
Line 231 sub packagemsg {
|
$attachmenturl =&HTML::Entities::encode($attachmenturl,'<>&"'); |
$attachmenturl =&HTML::Entities::encode($attachmenturl,'<>&"'); |
my $course_context = &get_course_context(); |
my $course_context = &get_course_context(); |
my $now=time; |
my $now=time; |
my $ip = &Apache::lonnet::get_requestor_ip(); |
|
my $msgcount = &get_uniq(); |
my $msgcount = &get_uniq(); |
unless(defined($msgid)) { |
unless(defined($msgid)) { |
$msgid = &buildmsgid($now,$subject,$env{'user.name'},$env{'user.domain'}, |
$msgid = &buildmsgid($now,$subject,$env{'user.name'},$env{'user.domain'}, |
Line 251 sub packagemsg {
|
Line 250 sub packagemsg {
|
} |
} |
$result .= '<servername>'.$ENV{'SERVER_NAME'}.'</servername>'. |
$result .= '<servername>'.$ENV{'SERVER_NAME'}.'</servername>'. |
'<host>'.$ENV{'HTTP_HOST'}.'</host>'. |
'<host>'.$ENV{'HTTP_HOST'}.'</host>'. |
'<client>'.$ip.'</client>'. |
'<client>'.$ENV{'REMOTE_ADDR'}.'</client>'. |
'<browsertype>'.$env{'browser.type'}.'</browsertype>'. |
'<browsertype>'.$env{'browser.type'}.'</browsertype>'. |
'<browseros>'.$env{'browser.os'}.'</browseros>'. |
'<browseros>'.$env{'browser.os'}.'</browseros>'. |
'<browserversion>'.$env{'browser.version'}.'</browserversion>'. |
'<browserversion>'.$env{'browser.version'}.'</browserversion>'. |
Line 398 sub buildmsgid {
|
Line 397 sub buildmsgid {
|
} |
} |
|
|
sub unpackmsgid { |
sub unpackmsgid { |
my ($msgid,$folder,$skipstatus,$status_cache,$onlycid)=@_; |
my ($msgid,$folder,$skipstatus,$status_cache)=@_; |
$msgid=&unescape($msgid); |
$msgid=&unescape($msgid); |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$count,$fromcid, |
my ($sendtime,$shortsubj,$fromname,$fromdomain,$count,$fromcid, |
$processid,$symb,$error) = split(/\:/,&unescape($msgid)); |
$processid,$symb,$error) = split(/\:/,&unescape($msgid)); |
if (!defined($processid)) { $fromcid = ''; } |
|
if (($onlycid) && ($onlycid ne $fromcid)) { |
|
return ($sendtime,'',$fromname,$fromdomain,'',$fromcid,'',$error); |
|
} |
|
$shortsubj = &unescape($shortsubj); |
$shortsubj = &unescape($shortsubj); |
$shortsubj = &HTML::Entities::decode($shortsubj); |
$shortsubj = &HTML::Entities::decode($shortsubj); |
$symb = &unescape($symb); |
$symb = &unescape($symb); |
Line 426 sub unpackmsgid {
|
Line 421 sub unpackmsgid {
|
|
|
|
|
sub sendemail { |
sub sendemail { |
my ($to,$subject,$body,$to_uname,$to_udom,$user_lh)=@_; |
my ($to,$subject,$body,$to_uname,$to_udom,$user_lh,$attachmenturl)=@_; |
my $senderaddress=''; |
my $senderaddress=''; |
my $replytoaddress=''; |
my $replytoaddress=''; |
my $msgsent; |
my $msgsent; |
Line 462 sub sendemail {
|
Line 457 sub sendemail {
|
"*** ".($senderaddress?&mt_user($user_lh,'You can reply to this e-mail'):&mt_user($user_lh,'Please do not reply to this address.')."\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; |
$attachmenturl = &Apache::lonnet::filelocation("",$attachmenturl); |
$msg->to($to); |
my $filesize = (stat($attachmenturl))[7]; |
$msg->subject('[LON-CAPA] '.$subject); |
if ($filesize > 1048576) { |
if ($replytoaddress) { |
print '<p><span class="LC_error">' |
$msg->add('Reply-to',$replytoaddress); |
.&mt('Email not sent. Attachment exceeds permitted length.') |
} |
.'</span><br /></p>'; |
if ($senderaddress) { |
} else { |
$msg->add('From',$senderaddress); |
my $top = MIME::Entity->build( Type => "multipart/mixed", |
} |
From => $senderaddress, |
$msg->add('Content-type','text/plain; charset=UTF-8'); |
To => $to, |
if (my $fh = $msg->open()) { |
Subject => '[LON-CAPA] '.$subject); |
print $fh $body; |
$top->attach(Data=>$body); |
$fh->close; |
$top->attach(Path=>$attachmenturl); |
|
|
|
open MAIL, "| /usr/lib/sendmail -t -oi -oem" or die "open: $!"; |
|
$top->print(\*MAIL); |
|
close MAIL; |
$msgsent = 1; |
$msgsent = 1; |
} |
} |
return $msgsent; |
return $msgsent; |
Line 483 sub sendemail {
|
Line 482 sub sendemail {
|
# ==================================================== Send notification emails |
# ==================================================== Send notification emails |
|
|
sub sendnotification { |
sub sendnotification { |
my ($to,$touname,$toudom,$subj,$crit,$text,$msgid)=@_; |
my ($to,$touname,$toudom,$subj,$crit,$text,$msgid,$attachmenturl)=@_; |
my $sender=$env{'environment.firstname'}.' '.$env{'environment.lastname'}; |
my $sender=$env{'environment.firstname'}.' '.$env{'environment.lastname'}; |
unless ($sender=~/\w/) { |
unless ($sender=~/\w/) { |
$sender=$env{'user.name'}.':'.$env{'user.domain'}; |
$sender=$env{'user.name'}.':'.$env{'user.domain'}; |
Line 540 to access the full message.',$url);
|
Line 539 to access the full message.',$url);
|
$subject = $subj; |
$subject = $subj; |
} |
} |
|
|
my ($blocked,$blocktext,$clientip); |
my ($blocked,$blocktext); |
$clientip = &Apache::lonnet::get_requestor_ip(); |
|
if (!$crit) { |
if (!$crit) { |
my %setters; |
my %setters; |
my ($startblock,$endblock,$triggerblock,$by_ip,$blockdom) = |
my ($startblock,$endblock) = |
&Apache::loncommon::blockcheck(\%setters,'com',$clientip,$touname,$toudom); |
&Apache::loncommon::blockcheck(\%setters,'com',$touname,$toudom); |
if ($startblock && $endblock) { |
if ($startblock && $endblock) { |
$blocked = 1; |
$blocked = 1; |
my $showstart = &Apache::lonlocal::locallocaltime($startblock); |
my $showstart = &Apache::lonlocal::locallocaltime($startblock); |
my $showend = &Apache::lonlocal::locallocaltime($endblock); |
my $showend = &Apache::lonlocal::locallocaltime($endblock); |
$blocktext = &mt_user($user_lh,'LON-CAPA messages sent to you between [_1] and [_2] will be inaccessible until the end of this time period, because you are a student in a course with an active communications block.',$showstart,$showend); |
$blocktext = &mt_user($user_lh,'LON-CAPA messages sent to you between [_1] and [_2] will be inaccessible until the end of this time period, because you are a student in a course with an active communications block.',$showstart,$showend); |
} elsif ($by_ip) { |
|
$blocked = 1; |
|
$blocktext = &mt_user($user_lh,'LON-CAPA messages sent to you will be inaccessible from your IP address [_1], because communication is being blocked for certain IP address(es).',$clientip); |
|
} |
} |
} |
} |
if ($userenv{'notifywithhtml'} ne '') { |
if ($userenv{'notifywithhtml'} ne '') { |
Line 571 to access the full message.',$url);
|
Line 566 to access the full message.',$url);
|
} |
} |
$body = $bodybegin.$bodysubj.$sendtext.$bodyend; |
$body = $bodybegin.$bodysubj.$sendtext.$bodyend; |
} |
} |
if (&sendemail($addr,$subject,$body,$touname,$toudom,$user_lh)) { |
if (&sendemail($addr,$subject,$body,$touname,$toudom,$user_lh,$attachmenturl)) { |
$numsent ++; |
$numsent ++; |
} |
} |
} |
} |
Line 582 to access the full message.',$url);
|
Line 577 to access the full message.',$url);
|
my $htmlfree = &make_htmlfree($text); |
my $htmlfree = &make_htmlfree($text); |
$body = $bodybegin.$bodysubj.$htmlfree.$bodyend; |
$body = $bodybegin.$bodysubj.$htmlfree.$bodyend; |
} |
} |
if (&sendemail($to,$subject,$body,$touname,$toudom,$user_lh)) { |
if (&sendemail($to,$subject,$body,$touname,$toudom,$user_lh,$attachmenturl)) { |
$numsent ++; |
$numsent ++; |
} |
} |
} |
} |
Line 751 sub user_crit_msg_raw {
|
Line 746 sub user_crit_msg_raw {
|
my $numperm = 0; |
my $numperm = 0; |
my $permlogmsgstatus; |
my $permlogmsgstatus; |
if ($critnotify) { |
if ($critnotify) { |
$numcrit = &sendnotification($critnotify,$user,$domain,$subject,1,$text,$msgid); |
$numcrit = &sendnotification($critnotify,$user,$domain,$subject,1,$text,$msgid,$attachmenturl); |
} |
} |
if ($toperm && $permemail) { |
if ($toperm && $permemail) { |
if ($critnotify && $numcrit) { |
if ($critnotify && $numcrit) { |
Line 760 sub user_crit_msg_raw {
|
Line 755 sub user_crit_msg_raw {
|
} |
} |
} |
} |
unless ($numperm) { |
unless ($numperm) { |
$numperm = &sendnotification($permemail,$user,$domain,$subject,1,$text,$msgid); |
$numperm = &sendnotification($permemail,$user,$domain,$subject,1,$text,$msgid,$attachmenturl); |
} |
} |
} |
} |
if ($toperm) { |
if ($toperm) { |
Line 895 sub user_normal_msg_raw {
|
Line 890 sub user_normal_msg_raw {
|
my $numperm = 0; |
my $numperm = 0; |
my $permlogmsgstatus; |
my $permlogmsgstatus; |
if ($notify) { |
if ($notify) { |
$numnotify = &sendnotification($notify,$user,$domain,$subject,0,$text,$msgid); |
$numnotify = &sendnotification($notify,$user,$domain,$subject,0,$text,$msgid,$attachmenturl); |
} |
} |
if ($toperm && $permemail) { |
if ($toperm && $permemail) { |
if ($notify && $numnotify) { |
if ($notify && $numnotify) { |
Line 905 sub user_normal_msg_raw {
|
Line 900 sub user_normal_msg_raw {
|
} |
} |
unless ($numperm) { |
unless ($numperm) { |
$numperm = &sendnotification($permemail,$user,$domain,$subject,0, |
$numperm = &sendnotification($permemail,$user,$domain,$subject,0, |
$text,$msgid); |
$text,$msgid,$attachmenturl); |
} |
} |
} |
} |
if ($toperm) { |
if ($toperm) { |