更改邮件 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';
}
?>
您可以参考下面的屏幕转储以获得结果
您好,我正在制作一个基于 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';
}
?>
您可以参考下面的屏幕转储以获得结果