我使用此代码使用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->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";
}
出现此错误:
2014-08-25 18:53:11 CLIENT -> SERVER: EHLO grabblaw.com
2014-08-25 18:53:11 SMTP ERROR: EHLO command failed:
2014-08-25 18:53:11 SMTP NOTICE: EOF caught while checking if connected SMTP connect() failed. Mailer Error: SMTP connect() failed.
我花了一整天,但无法完成这项工作。请帮忙。 请参阅此网址以获取更多错误详细信息:http://grabblaw.com/mail_template.php
答案 0 :(得分:1)
与此问题类似SMTP error with PHPMailer EHLO not supported
将您的端口更改为25
应该有效:
我试着telnet:
telnet grabblaw.com 25 //works
telnet grabblaw.com 465 //hangs
telnet grabblaw.com 587 //no response
答案 1 :(得分:1)
您正在设置:
$mail->Port = 465; // or 587
但没有随附:
$mail->SMTPSecure = 'ssl'; // or 'tls'
因此,您尝试将未加密的数据发送到加密连接,这将无法正常工作(这是15年前SMTP over SSL被弃用的原因之一)。 587上的TLS对此更具抵抗力。
切换到端口25通常意味着您完全放弃了加密,这不是一个好的解决方案。