2012-10-09 88 views
1

我想发送邮件PHP。我为本地主机和服务器使用相同的代码。但是,当我使用服务器上的代码,它似乎并没有工作:在PHP发送邮件:SMTP错误:无法验证

SMTP Error: Could not authenticate. Message was not sent.Mailer error: SMTP Error: Could not authenticate. 

这是我的代码供您参考。

require("class.phpmailer.php"); // path to the PHPMailer class 

$mail = new PHPMailer(); 

$mail->IsSMTP(); // telling the class to use SMTP 
$mail->Mailer = "smtp"; 
$mail->Host = "ssl://smtp.gmail.com"; 
$mail->Port = 465; 
$mail->SMTPAuth = true; // turn on SMTP authentication 
$mail->Username = "myname"; // SMTP username 
$mail->Password = "password"; // SMTP password 

$mail->From = "[email protected]"; 
$mail->AddAddress("[email protected]"); 

$mail->Subject = "First PHPMailer Message"; 
$mail->Body = "Hi! \n\n This is my first e-mail sent through PHPMailer."; 
$mail->WordWrap = 50; 

if(!$mail->Send()) { 
echo 'Message was not sent.'; 
echo 'Mailer error: ' . $mail->ErrorInfo; 
} else { 
echo 'Message has been sent.'; 
} 

我做了很多搜索,没有弹出。任何帮助将不胜感激。

+0

你确定你已经给出正确的gmail ID和密码吗? –

+0

是的!它从本地主机发送邮件,但不从服务器发送。 –

+0

尝试添加这个'$ mail-> SMTPSecure =“ssl”;' –

回答

0

它发生,因为密码包含特殊字符。我尝试使用“\”之前像Password="djgh\^dfgfjk".特殊字符但它并没有帮助我。
我只是创建新的ID和简单的密码没有任何特殊的字符,令人惊讶的是它的工作。
使用无特殊字符的密码。

0

只看看这可能对您有帮助:
它是用于smtp连接工作或不工作的telnet?在Windows 7防火墙阻止(默认)的SMTP连接,这样, http://support.microsoft.com/kb/153119

1

尝试TLS和端口587:

$mail->SMTPSecure = "tls"; 
$mail->Host  = "smtp.gmail.com"; 
$mail->Port  = 587; 

正如你可以看到你也可以指定要在SMTPSecure可变SSL连接和公正使用主机作为smtp.gmail.com

也可以尝试这个$mail->Mailer = "smtp";

0

一些托管服务提供商,如块的1and1传出的电子邮件端口,苏更换此$mail->IsSMTP(); ch为25,465和587. AFAIK的唯一解决方案是更改托管服务提供商。

试着做一个简单的PHP文件,只是做了“fsokopen”你要使用的端口,看看是否能工程

0

它可能由于各种原因而发生。在我的情况下,它的工作,通过改变从

$phpmailer->isSMTP(); 

$phpmailer->Mailer  = 'smtp'; 

工作。

相关问题