From 0a4e0921d3c4e4e1e485f43dc05bf0447fbc846a Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Tue, 31 Mar 2015 16:07:51 +0200 Subject: [PATCH] Plugin API: Added message_ready hook - the last chance to modify Mail_Mime object before saving or sending the message --- CHANGELOG | 1 + program/steps/mail/sendmail.inc | 16 ++++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index d14566ddf..41cd629de 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -4,6 +4,7 @@ CHANGELOG Roundcube Webmail - Password plugin: Added 'kpasswd' driver by Peter Allgeyer - Add initdb.sh to create database from initial.sql script with prefix support (#1490188) - Plugin API: Added message_part_body hook +- Plugin API: Added message_ready hook - Plugin API: Add special onload() method to execute plugin actions before startup (session and GUI initialization) - Fix handling of %-encoded entities in mailto: URLs (#1490346) - Fix zipped messages downloads after selecting all messages in a folder (#1490339) diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc index 5326d6452..b3034f57d 100644 --- a/program/steps/mail/sendmail.inc +++ b/program/steps/mail/sendmail.inc @@ -113,6 +113,12 @@ else if ($from_string = rcmail_email_input_format($from)) { $from = null; } +// check 'From' address (identity may be incomplete) +if (!$savedraft && !$saveonly && empty($from)) { + $OUTPUT->show_message('nofromaddress', 'error'); + $OUTPUT->send('iframe'); +} + if (!$from_string && $from) { $from_string = $from; } @@ -508,14 +514,12 @@ $MAIL_MIME->setParam('text_charset', $text_charset); // pass headers to message object $MAIL_MIME->headers($headers); +// This hook allows to modify the message before send or save action +$plugin = $RCMAIL->plugins->exec_hook('message_ready', array('message' => $MAIL_MIME)); +$MAIL_MIME = $plugin['message']; + // Begin SMTP Delivery Block if (!$savedraft && !$saveonly) { - // check 'From' address (identity may be incomplete) - if (empty($from)) { - $OUTPUT->show_message('nofromaddress', 'error'); - $OUTPUT->send('iframe'); - } - // Handle Delivery Status Notification request $smtp_opts['dsn'] = $dsn_enabled;