0

我的 Windows Server 2012 中的 PHPMailer 有问题。我使用 XAMPP 作为本地服务器。我注意到我无法在我的窗口服务器 2012 中 ping smtp.gmail.com。它说

ping request could not find host smtp.gmail.com. Please check and try again

我添加了这一行php.ini

[mail function]
smtp_server=smtp.gmail.com
smtp_port=25
sendmail_path ="\"D:\xampp\sendmail\sendmail.exe\" -t"
mail.add_x_header=On

我添加了这一行sendmail.ini

[sendmail]
smtp_server=smtp.gmail.com
smtp_port=587
smtp_ssl=auto
error_logfile=error.log
debug_logfile=debug.log
auth_username=example@gmail.com
auth_password=password
force_sender=
force_recipient=
hostname=localhost

我在本地 PC 上测试了我的 PHPMailer,它工作正常。我可以发送到我自己的域电子邮件(“example@pn.com”)和其他域电子邮件,例如 test@gmail.com、test@yahoo.com 等。这是我的 PHPMailer 代码。

测试发送.php

<?php
date_default_timezone_set('Etc/UTC');
require '../PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Debugoutput = 'html';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Username = "example@gmail.com";
$mail->Password = "password";
$mail->setFrom('test@gmail.com', 'First Last');
//$mail->addReplyTo('replyto@example.com', 'First Last');
$mail->addAddress('test@gmail.com', 'John Doe');
$mail->Subject = 'PHPMailer GMail SMTP test';
//$mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
$mail->Body = 'dfssf';
$mail->AltBody = 'This is a plain-text message body';
//$mail->addAttachment('images/phpmailer_mini.png');
if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
} else {
    echo "Message sent!";
}

但是当我在我的服务器中添加类似的 PHPMailer 文件夹和文件时,它仅在我发送到我自己的域(“example@pn.com”)时才有效。它不适用于其他电子邮件域,如 gmail、yahoo 等。它说

Mailer Error: SMTP Error: The following recipients failed: test@gmail.com: Unable to relay

如何解决这个问题?

谢谢。

4

0 回答 0