Alerts, such as serials claims and routing lists messages and new
member details originally used sendmail directly. Now they go into the
message queue so that they can use centralised configuration.
---
C4/Letters.pm | 90 ++++++++++++++++++++++++++++++++++----------------------
1 files changed, 55 insertions(+), 35 deletions(-)
diff --git a/C4/Letters.pm b/C4/Letters.pm
index 0fccad4..63095f2 100644
--- a/C4/Letters.pm
+++ b/C4/Letters.pm
@@ -279,20 +279,18 @@ sub SendAlerts {
my $innerletter = $letter;
my $borinfo = C4::Members::GetMember('borrowernumber' =>
$_->{'borrowernumber'});
parseletter( $innerletter, 'borrowers', $_->{'borrowernumber'} );
+ $innerletter->{'content-type'} = 'text/plain; charset="utf8"';
# ... then send mail
- if ( $borinfo->{email} ) {
- my %mail = (
- To => $borinfo->{email},
- From => $borinfo->{email},
- Subject => "" . $innerletter->{title},
- Message => "" . $innerletter->{content},
- 'Content-Type' => 'text/plain; charset="utf8"',
- );
- sendmail(%mail) or carp $Mail::Sendmail::error;
+ my %mail = (
+ borrowernumber => $borinfo->{borrowernumber},
+ message_transport_type => 'email',
+ letter => $innerletter,
+ no_local_bcc => 1,
+ );
+ EnqueueLetter( \%mail );
# warn "sending to $mail{To} From $mail{From} subj $mail{Subject} Mess
$mail{Message}";
- }
}
}
elsif ( $type eq 'claimacquisition' ) {
@@ -335,24 +333,24 @@ sub SendAlerts {
}
$letter->{content} =~ s/<<[^>]*>>//g;
my $innerletter = $letter;
-
+ $innerletter->{'content-type'} = 'text/plain; charset="utf8"';
# ... then send mail
if ( $databookseller->{bookselleremail}
|| $databookseller->{contemail} )
{
my %mail = (
- To => $databookseller->{bookselleremail}
+ to_address => $databookseller->{bookselleremail}
. (
$databookseller->{contemail}
? "," . $databookseller->{contemail}
: ""
),
- From => $userenv->{emailaddress},
- Subject => "" . $innerletter->{title},
- Message => "" . $innerletter->{content},
- 'Content-Type' => 'text/plain; charset="utf8"',
+ from_address => $userenv->{emailaddress},
+ message_transport_type => 'email',
+ letter => $innerletter,
+ no_local_bcc => 1,
);
- sendmail(%mail) or carp $Mail::Sendmail::error;
+ EnqueueLetter( \%mail );
}
if ( C4::Context->preference("LetterLog") ) {
logaction(
@@ -422,15 +420,19 @@ sub SendAlerts {
my $mail_msg = $innerletter->{content};
$mail_msg ||= q{};
$mail_subj ||= q{};
-
+ my $letter = {
+ title => $mail_subj,
+ content => $mail_msg,
+ 'content-type' => 'text/plain; charset="utf8"',
+ };
my %mail = (
- To => $mail_to,
- From => $userenv->{emailaddress},
- Subject => $mail_subj,
- Message => $mail_msg,
- 'Content-Type' => 'text/plain; charset="utf8"',
+ to_address => $mail_to,
+ from_address => $userenv->{emailaddress},
+ message_transport_type => 'email',
+ letter => $letter,
+ no_local_bcc => 1,
);
- sendmail(%mail) or carp $Mail::Sendmail::error;
+ EnqueueLetter( \%mail );
logaction(
"ACQUISITION",
"CLAIM ISSUE",
@@ -443,7 +445,7 @@ sub SendAlerts {
. $innerletter->{content}
) if C4::Context->preference("LetterLog");
}
- }
+ }
# send an "account details" notice to a newly created user
elsif ( $type eq 'members' ) {
# must parse the password special, before it's hashed.
@@ -453,14 +455,15 @@ sub SendAlerts {
parseletter( $letter, 'branches', $externalid->{'branchcode'} );
my $branchdetails = GetBranchDetail($externalid->{'branchcode'});
+ $letter->{'content-type'} = 'text/plain; charset="utf8"';
+
my %mail = (
- To => $externalid->{'emailaddr'},
- From => $branchdetails->{'branchemail'} ||
C4::Context->preference("KohaAdminEmailAddress"),
- Subject => $letter->{'title'},
- Message => $letter->{'content'},
- 'Content-Type' => 'text/plain; charset="utf8"',
+ to_address => $externalid->{'emailaddr'},
+ message_transport_type => 'email',
+ letter => $letter,
+ no_local_bcc => 1,
);
- sendmail(%mail) or carp $Mail::Sendmail::error;
+ EnqueueLetter( \%mail );
}
}
@@ -633,13 +636,30 @@ sub EnqueueLetter ($) {
# If we have any attachments we should encode then into the body.
if ( $params->{'attachments'} ) {
$params->{'letter'} = _add_attachments(
- { letter => $params->{'letter'},
+ {
+ letter => $params->{'letter'},
attachments => $params->{'attachments'},
message => MIME::Lite->new( Type => 'multipart/mixed' ),
}
);
}
+ # If we aren't given a from address, we first go for the user's
+ # branch (which may be the librarians, but that's OK) email, if that
doesn't
+ # work, we go for the koha admin address.
+ if ( !$params->{'from_address'} ) {
+ my $userenv = C4::Context->userenv;
+ my $branch = $userenv->{branch};
+ my $branch_detail = GetBranchDetail($branch);
+ my $branch_email = $branch_detail->{branchemail};
+ $params->{from_address} = $branch_email
+ || C4::Context->preference('KohaAdminEmailAddress');
+ }
+
+ # Set a reply-to if there isn't one already.
+ $params->{'reply_to_address'} = $params->{from_address}
+ if !$params->{reply_to_address};
+
my $dbh = C4::Context->dbh();
my $statement = << 'ENDSQL';
INSERT INTO message_queue
@@ -652,9 +672,9 @@ ENDSQL
my $sth = $dbh->prepare($statement);
my $result = $sth->execute(
- $params->{'borrowernumber'}, # borrowernumber
- $params->{'letter'}->{'title'}, # subject
- $params->{'letter'}->{'content'}, # content
+ $params->{'borrowernumber'}, # borrowernumber
+ $params->{'letter'}->{'title'}, # subject
+ $params->{'letter'}->{'content'}, # content
$params->{'letter'}->{'metadata'} || '', # metadata
$params->{'letter'}->{'code'} || '', # letter_code
$params->{'letter'}->{'content-type'}, # content_type
--
1.7.4.1
_______________________________________________
Koha-patches mailing list
[email protected]
http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches
website : http://www.koha-community.org/
git : http://git.koha-community.org/
bugs : http://bugs.koha-community.org/