使用phpmailer的SMTP连接错误
我使用此代码使用smtp发送电子邮件:使用phpmailer的SMTP连接错误,php,smtp,phpmailer,Php,Smtp,Phpmailer,我使用此代码使用smtp发送电子邮件: require 'phpmailer/class.phpmailer.php'; $mail = new PHPMailer(); // create a new object $mail->IsSMTP(); // enable SMTP $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only $mail->SMTPAut
require 'phpmailer/class.phpmailer.php';
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->Host = "sr4.supercp.com";
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "********";
$mail->Password = "********";
$mail->SetFrom("********");
$mail->Subject = "Test";
$mail->Body = "hello";
$mail->AddAddress("****@gmail.com");
if(!$mail->Send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
echo "<pre>";
echo print_r($mail);
}
else
{
echo "Message has been sent";
}
我花了整整一天的时间,但无法完成这项工作。请帮忙。
请参考此url了解更多错误详细信息:类似于此问题
将端口更改为25
应该可以工作:
我试图通过telnet:
$mail->Port = 465; // or 587
您正在设置:
$mail->SMTPSecure = 'ssl'; // or 'tls'
但是没有伴随的:
因此,您试图将未加密的数据发送到加密的连接,这将不起作用(这是15年前SMTP over SSL被弃用的原因之一)。587上的TLS更能抵抗这种情况
切换到端口25通常意味着您将完全放弃加密,这不是一个好的解决方案。您使用的是旧版本的PHPMailer。如果设置
$mail->SMTPDebug=4,您还将获得更多关于连接状态的反馈代码>我是空白的,因为这些设置正在工作,在不同的站点上没有任何正确的更改,但不是在其子域中,而是在我将端口编辑为25和$mail->SMTPSecure='tls'之后;它工作得很好。在smtp设置中,它是为465端口指定的,但在这里,我让它在25之前工作。无论如何,非常感谢你您可能需要向grabblaw.com的服务器管理员询问,为什么它在端口465上没有响应。正如Synchro所说,使用加密会更好,端口25通常不会,但如果您不打算传递敏感数据,这可能不是什么大问题。
$mail->Port = 465; // or 587
$mail->SMTPSecure = 'ssl'; // or 'tls'