use Friendica\Core\Hook;
use Friendica\DI;
use Friendica\Object\EMail\IEmail;
-use Friendica\Util\ConfigFileLoader;
+use Friendica\Core\Config\Util\ConfigFileManager;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
function phpmailer_install()
{
Hook::register('load_config' , __FILE__, 'phpmailer_load_config');
- Hook::register('emailer_send_prepare', __FILE__, 'phpmailer_emailer_send_prepare');
+ Hook::register('emailer_send_prepare', __FILE__, 'phpmailer_emailer_send_prepare', 5);
}
-function phpmailer_load_config(App $a, ConfigFileLoader $loader)
+function phpmailer_load_config(ConfigFileManager $loader)
{
- $a->getConfigCache()->load($loader->loadAddonConfig('phpmailer'));
+ DI::app()->getConfigCache()->load($loader->loadAddonConfig('phpmailer'), \Friendica\Core\Config\ValueObject\Cache::SOURCE_STATIC);
}
/**
- * @param App $a
* @param IEmail $email
*/
-function phpmailer_emailer_send_prepare(App $a, IEmail &$email)
+function phpmailer_emailer_send_prepare(IEmail &$email)
{
// Passing `true` enables exceptions
$mailer = new PHPMailer(true);
try {
+ // Setup encoding.
+ $mailer->CharSet = 'UTF-8';
+ $mailer->Encoding = 'base64';
+
if (DI::config()->get('phpmailer', 'smtp')) {
// Set mailer to use SMTP
$mailer->isSMTP();
- // Setup encoding.
- $mailer->CharSet = 'UTF-8';
- $mailer->Encoding = 'base64';
-
// Specify main and backup SMTP servers
$mailer->Host = DI::config()->get('phpmailer', 'smtp_server');
$mailer->Port = DI::config()->get('phpmailer', 'smtp_port');
// additional headers
if (!empty($email->getAdditionalMailHeader())) {
- foreach (explode("\n", trim($email->getAdditionalMailHeader())) as $header_line) {
- list($name, $value) = explode(':', $header_line, 2);
- $mailer->addCustomHeader(trim($name), trim($value));
+ foreach ($email->getAdditionalMailHeader() as $name => $values) {
+ // Set the "Message-ID" header for PHP-Mailer directly
+ if (strtolower($name) === 'message-id') {
+ // implode all values to one entry, because there's only one value possible
+ $mailer->MessageID = trim(implode("", $values));
+ } else {
+ $mailer->addCustomHeader(trim($name), trim(implode("\n", $values)));
+ }
}
}