Ошибка DKIM при отправке почты с GSuite с использованием PHP Mailer - PullRequest
0 голосов
/ 08 октября 2019

Я размещен на хостинге A2, но я использую GSuite для обработки всей своей почты.

Когда я отправляю тестовое сообщение на mail-tester.com из Gmail, я получаю потрясающий рейтинг.

Однако, когда я отправил сообщение, используя мой PHP-скрипт:

$mail = new PHPMailer(true);
ob_start();

//Server settings
$mail->SMTPDebug = SMTP::DEBUG_SERVER;                // Enable verbose debug output
$mail->Host       = 'smtp.gmail.com';                 // Set the SMTP server to send through
$mail->SMTPAuth   = true;                             // Enable SMTP authentication
$mail->Username   = $pickuploc . '@xxxx.com';                 // SMTP username
$mail->Password   = 'xxx';  
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;   // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` also accepted
$mail->Port       = 587;                              // TCP port to connect to

//Recipients
$mail->setFrom($pickuploc . '@xxx.com', 'xxx xxxx');
$mail->addAddress($email, $fname . " " . $lname);     // Add a recipient
$mail->addBCC($pickuploc . '@xxx.com');

// Content
$mail->isHTML(true);                                  // Set email format to HTML
include 'email-confirmed.html';
$mail->Subject = 'Your Reservation Has Been Confirmed!';
$mail->Body    = ob_get_clean();
$mail->AltBody = 'Your reservation has been confirmed.';

$mail->send();

Я получаю сообщение об ошибке от mail-tester.com, в котором говорится, что мой DKIM недействителен.

Я думаю, что этопотому что я отправляю форму на сторонний сервер (не Google) и мои записи MX указывают на Google, но мне действительно нужны эти письма, чтобы узнать, как мне решить эту проблему?

Есть ли способ настроить это? в PHP Mailer? Спасибо.

1 Ответ

0 голосов
/ 08 октября 2019

Причина, по которой он жалуется, заключается в том, что вы вообще не подписываетесь с DKIM!

Вы можете подписывать DKIM с помощью PHPMailer, но требуется определенная настройка. PHPMailer предоставляет некоторый код, чтобы помочь вам сделать это. Убедитесь, что вы используете PHPMailer 6.1.1 или более поздней версии ;в старых версиях есть ошибки, влияющие на подпись DKIM.

Прежде всего вам необходимо создать ключи DKIM и поместить их в свой DNS.

Теперь вам нужно изменить скриптподписывать сообщения с помощью личного ключа, как показано в в этом примере ;детали, которые нужно добавить:

//This should be the same as the domain of your From address
$mail->DKIM_domain = 'example.com';
//See the DKIM_gen_keys.phps script for making a key pair -
//here we assume you've already done that.
//Path to your private key:
$mail->DKIM_private = 'dkim_private.pem';
//Set this to your own selector
$mail->DKIM_selector = 'phpmailer';
//Put your private key's passphrase in here if it has one
$mail->DKIM_passphrase = '';
//The identity you're signing as - usually your From address
$mail->DKIM_identity = $mail->From;
//Suppress listing signed header fields in signature, defaults to true for debugging purpose
$mail->DKIM_copyHeaderFields = false;
//Optionally you can add extra headers for signing to meet special requirements
$mail->DKIM_extraHeaders = ['List-Unsubscribe', 'List-Help'];
...