首先有几件事。我管理我朋友的小杂草店,位于 onbud.ca,我的小型网络托管网站是 pihosting.ca。
旧的电子邮件服务器是209.15.158.18,但我刚刚设置的新邮件服务器是209.15.158.21。所以我试图从 mail.pihosting.ca 迁移到 mail1.pihosting.ca。
我做了一些服务器维护,并将邮件服务器从网络服务器上移走了。一切似乎都运转良好。我将登录新的电子邮件服务器,向我的 gmail 帐户发送一封电子邮件并回复,该电子邮件将被发送回正确的 mx 服务器,209.15.158.21。
但是当我访问网站并发出虚拟订单来测试电子邮件时,会发送 3 封电子邮件。一份给客户,一份给网站所有者和[电子邮件受保护]。当此订单完成后,它会从旧邮件服务器 209.15.158.18 发送电子邮件,而当人们回复这些电子邮件时,新服务器将不会收到这些回复。
我还从运行 Web 服务器和旧邮件服务器的服务器进行 ping 操作,这就是结果。
root@mail:~# ping mail1.pihosting.ca
PING mail1.pihosting.ca (209.15.158.21) 56(84) bytes of data.
64 bytes from mail1.pihosting.ca (209.15.158.21): icmp_seq=1 ttl=64 time=0.610 m s
64 bytes from mail1.pihosting.ca (209.15.158.21): icmp_seq=2 ttl=64 time=0.544 m s
64 bytes from mail1.pihosting.ca (209.15.158.21): icmp_seq=3 ttl=64 time=0.539 m s
64 bytes from mail1.pihosting.ca (209.15.158.21): icmp_seq=4 ttl=64 time=0.497 m s
^Z
[1]+ Stopped ping mail1.pihosting.ca
这是我的 phpmailer 脚本。
<?PHP
//include('include/config.php');
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
use PHPMailer\PHPMailer\PHPMailer;
//use PHPMailer\PHPMailer\Exception;
require 'vendor/phpmailer/src/Exception.php';
require 'vendor/phpmailer/src/PHPMailer.php';
require 'vendor/phpmailer/src/SMTP.php';
$mail = new PHPMailer(true);
$message = 'This is a test';
try {
$mail->isSMTP(); // Send using SMTP
$mail->Host = 'mail1.pihosting.ca'; // Set the SMTP server to send through
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '[email protected]'; // SMTP username
$mail->Password = 'email-pass'; // SMTP password
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // Enable TLS encryption;
$mail->Port = 587; // TCP port to connect to, use 465 for
$mail->setFrom('[email protected]','OnBud');
$mail->addAddress('********@gmail.com');
$mail->addReplyTo('[email protected]','OnBud');
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'This is a test';
$mail->Body = $message;
$mail->AltBody = strip_tags($message);
$mail->AddCustomHeader("List-Unsubscribe: <mailto:[email protected]?subject=Unsubscribe>,<http://onbud.ca/unsubscribe.php>");
$mail->DKIM_domain = 'onbud.ca';
$mail->DKIM_private = "lock/default.private";
$mail->DKIM_selector = 'default';
$mail->DKIM_passphrase = "";
$mail->DKIM_identity = $mail->From;
$mail->send();
echo 'Success';
} catch (Exception $e) {
echo 'failed to send';
}
?>
这也是为 onbud.ca 存储的 DNS 记录
IN MX 0 mail
mail 86400 IN A 209.15.158.21
www 86400 IN A 209.15.158.18
_dmarc 86400 IN TXT "v=DMARC1; p=none; pct=100; fo=1; rua=mailto:[email protected]"
@ 86400 IN TXT "v=spf1 a mx ip4:209.15.158.18 ip4:209.15.158.21 ~all"
以及 pihosting.ca
IN MX 1 mail
IN MX 0 mail1
mail 86400 IN A 209.15.158.18
mail1 86400 IN A 209.15.158.21
www 86400 IN A 209.15.158.18
_dmarc 86400 IN TXT "v=DMARC1; p=none; pct=100; fo=1; rua=mailto:[email protected]"
@ 86400 IN TXT "v=spf1 a mx ip4:209.15.158.18 ip4:209.15.158.21 ~all"
我如何能够使用新服务器上的凭据向客户端发送电子邮件,而不依赖于旧邮件服务器(也是 Web 服务器)
意识到启用 isSMTP() 后会出错。这让我怀疑我的 SMTP 凭据不正确。它是。我修好了,发送了电子邮件,现在可以使用了。