*/ use Friendica\App; use Friendica\Core\Config; use Friendica\Core\Hook; use Friendica\DI; use Friendica\Util\ConfigFileLoader; 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'); } function phpmailer_load_config(App $a, ConfigFileLoader $loader) { $a->getConfigCache()->load($loader->loadAddonConfig('phpmailer')); } /** * @param App $a * @param array $b */ function phpmailer_emailer_send_prepare(App $a, array &$b) { require_once __DIR__ . '/phpmailer/src/PHPMailer.php'; require_once __DIR__ . '/phpmailer/src/SMTP.php'; require_once __DIR__ . '/phpmailer/src/Exception.php'; // Passing `true` enables exceptions $mail = new PHPMailer(true); try { if (Config::get('phpmailer', 'smtp')) { // Set mailer to use SMTP $mail->isSMTP(); // Setup encoding. $mail->CharSet = 'UTF-8'; $mail->Encoding = 'base64'; // Specify main and backup SMTP servers $mail->Host = Config::get('phpmailer', 'smtp_server'); $mail->Port = Config::get('phpmailer', 'smtp_port'); if (Config::get('system', 'smtp_secure') && Config::get('phpmailer', 'smtp_port_s')) { $mail->SMTPSecure = Config::get('phpmailer', 'smtp_secure'); $mail->Port = Config::get('phpmailer', 'smtp_port_s'); } if (Config::get('phpmailer', 'smtp_username') && Config::get('phpmailer', 'smtp_password')) { $mail->SMTPAuth = true; $mail->Username = Config::get('phpmailer', 'smtp_username'); $mail->Password = Config::get('phpmailer', 'smtp_password'); } if (Config::get('phpmailer', 'smtp_from')) { $mail->setFrom(Config::get('phpmailer', 'smtp_from'), $b['fromName']); } } else { $mail->setFrom($b['fromEmail'], $b['fromName']); } // subject $mail->Subject = $b['messageSubject']; if (!empty($b['toEmail'])) { $mail->addAddress($b['toEmail']); } // html version if (!empty($b['htmlVersion'])) { $mail->isHTML(true); $mail->Body = $b['htmlVersion']; $mail->AltBody = $b['textVersion']; } else { // add text $mail->Body = $b['textVersion']; } if (!empty($b['replyTo'])) { $mail->addReplyTo($b['replyTo'], $b['fromName']); } // additional headers if (!empty($b['additionalMailHeader'])) { foreach (explode("\n", trim($b['additionalMailHeader'])) as $header_line) { list($name, $value) = explode(':', $header_line, 2); $mail->addCustomHeader(trim($name), trim($value)); } } $b['sent'] = $mail->send(); } catch (Exception $e) { DI::logger()->error('PHPMailer error', ['ErrorInfo' => $mail->ErrorInfo, 'code' => $e->getCode(), 'message' => $e->getMessage()]); } }