2016-09-13 262 views
0

当我设置了$mail->isSMTP();时,我已经查看了为什么我的PHP脚本没有发送任何电子邮件。通过SMTP使用PHPMailer发送电子邮件时出错

在我进入问题之前,我想指出,我正在使用mailgun.org作为我的SMTP服务器。我的PHP脚本很简单,我有一个将数据转发到PHP文件的HTML表单,后者又调用PHPMailer脚本并发送电子邮件。

下面是代码我的PHP脚本:

date_default_timezone_set('Asia/Manila'); 

require 'phpmailer/PHPMailerAutoload.php'; 
// include 'phpmailer/class.phpmailer.php'; 
// require 'phpmailer/class.smtp.php'; 

$mail = new PHPMailer; 
//$mail->isSMTP(); 
$mail->SMTPDebug = 0; 
$mail->Debugoutput = 'html'; 
$mail->Host = "smtp.mailgun.org"; 
$mail->Port = 465; 
$mail->SMTPAuth = true; 
$mail->SMTPSecure = "ssl"; 
$mail->Username = ""; //Username removed 
$mail->Password = ""; //Password removed 
$mail->setFrom('', ''); //Email address and Name removed 
$mail->addReplyTo($userMail, $firstName); 
$mail->addAddress('[email protected]', 'Name'); //Actual Values Changed 
$mail->addAddress('[email protected]', 'Name'); //Actual Values Changed 
$mail->addAddress('[email protected]', 'Name'); //Actual Values Changed 
$mail->Subject = 'New Application for website by '. $firstName; 
$mail->msgHTML($theMessage); 
$mail->AltBody = $theMessage; 
if (!$mail->send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} else { //Some HTML code here 
} 

那么现在,你可以看到,我已经注释掉$mail->isSMTP();线。这是因为每当我尝试使用它时,代码都不会加载,经过漫长的等待后会出现500错误。 (不幸的是,通过cPanel安装程序不允许我查看Apache日志)。

我试图导入只是class.phpmailer.php文件,但这给了我一个致命的错误,类SMTP未定义,这是预期的。然后我包含了class.smtp.php文件,它给了我相同的500错误。

我看了看周围的StackOverflow,发现this answer但是它并没有帮助我的情况。

我曾看过Mailgun的日志,但他们甚至没有尝试连接脚本的记录。

Additional Information: If it matters, I have the following files in the same directory: 
- sendMail.php //The script above 
- class.phpmailer.php 
- class.smtp.php 
- PHPMailerAutoload.php 
- index.html //Not important in this situation. 

我希望有人能帮助我,现在我依靠非smtp方法。 :/

+0

就像其他问题所述,请执行[故障排除指南](https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting)中给出的检查。这很可能是您的ISP阻止出站SMTP - 您使用的是GoDaddy吗? – Synchro

+0

@Synchro我在本地主机和生产上都得到了相同的结果。然而,我会检查与ISP,我在同一主机上运行的Wordpress安装和smtp工作正常,它似乎是与我的代码的东西。 –

+0

你确定吗?默认情况下,wordpress将以isMail()模式使用PHPMailer。顺便说一下,你的500错误听起来很简单,因为它无法连接。 – Synchro

回答

0

试试这个工作很好..!

date_default_timezone_set('Asia/Manila'); 

require 'phpmailer/PHPMailerAutoload.php'; 
// include 'phpmailer/class.phpmailer.php'; 
// require 'phpmailer/class.smtp.php'; 

$mail = new PHPMailer(); 
$mail->IsSMTP(); 
$mail->SMTPDebug = 1; 
$mail->SMTPAuth = true; 
$mail->SMTPSecure = 'ssl'; 
$mail->Host = "smtp.gmail.com"; 
$mail->Port = 465; 
$mail->Username = ""; //Username removed 
$mail->Password = ""; //Password removed 
$mail->addReplyTo($userMail, $firstName); 
$mail->SetFrom('[email protected]', 'my name'); 
$mail->Subject = 'New Application for website by '. $firstName;$mail->MsgHTML($theMessage); 
$mail->AddAddress('[email protected]', 'my name'); 
if($mail->Send()) { 
    echo "Message sent!"; 
}else { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} 
相关问题