更改邮件 ID PHPMailer

Change Message-ID PHPMailer

您好,我正在制作一个基于 php 的邮件应用程序,它将与外部 smtp 服务器连接并发送电子邮件。现在我已经设法匹配所有内容,但 Message-ID 的@domain-name 和发件人域名不匹配...

这是我得到的结果: Wrong Message ID Header

这是我应该得到的结果(这封电子邮件是从 Mailwizz 发送的,该 Mailwizz 与我正在尝试连接我的应用程序的同一个 SMTP 服务器相连)

Expected Message ID Header

send.php 我使用 PHPMailer

连接 SMTP 的文件

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'PHPMailer/Exception.php';
require 'PHPMailer/PHPMailer.php';
require 'PHPMailer/SMTP.php';

$mail = new PHPMailer;

$mail->isSMTP();
$mail->Host = 'smtp*****************';
$mail->SMTPAuth = true;
$mail->Username = 'notify@send.al***********';
$mail->Password = '**********';
$mail->SMTPSecure = 'tls';
$mail->Port = 80;

$mail->SetFrom('jon@al***********','John Adams');
$mail->Sender = 'notify@send.al*********';
$mail->addAddress('*********@gmail.com');
$mail->Subject = 'Hello This is a TEST FROM SMTP';
$mail->isHTML(false);
$mail->Body = 'Hello let me know when its received';
$mail->addCustomHeader('X-Sender', 'notify@send.al**********');
$mail->XMailer=null;
$mail->MessageID = md5('HELLO'.(idate("U")-1000000000).uniqid()).'-'.$type.'-'.$id.'@send.al*********';
if(!$mail->send()){
    echo 'Error is '.$mail->ErrorInfo;
}
else{
    echo 'Message has been sent!';
}
?>

根据我的经验,如果要设置 MessageID,则不需要使用 addCustomHeader。

假设您要设置Message ID为[随机]@send.alok,那么请使用如下:

$mail->MessageID = "<" . md5('HELLO'.(idate("U")-1000000000).uniqid()).'@send.alok>';

因此,请以下内容就可以了:

<?php
use PHPMailer\PHPMailer\PHPMailer; 
use PHPMailer\PHPMailer\Exception; 

require './Exception.php'; 
require './PHPMailer.php'; 
require './SMTP.php'; 



$user='smtp_xxxxxx_user';
$pass='smtp_password';
$mail = new PHPMailer(true);                              

try { 

    $mail->CharSet ="UTF-8";       
    $mail->SMTPDebug = 0;                      
    $mail->isSMTP();                             
    $mail->Host = 'smtp.xxxxx.com';        

    $mail->Username = $user;               
    $mail->Password = $pass;             


$mail->MessageID = "<" . md5('HELLO'.(idate("U")-1000000000).uniqid()).'@send.alok>';


  $mail->setFrom('jon@alxxxx.com', 'Jon Al');  
  $mail->addAddress('jon@gmail.com');  

$subject="test";
$message="test123";

    $mail->Port = 25;                             
    $mail->isHTML(true);                                  
    $mail->Subject = $subject;
    $mail->Body    = $message;
    $mail->send(); 
//    echo 'Success'; 
} catch (Exception $e) { 
//echo 'Failed'; 
}

?>

您可以参考下面的屏幕转储以获得结果