PHPMailer不会发送

时间:2016-01-10 10:29:44

标签: php email phpmailer

我是编程新手,我在iMac上使用MAMP(PHP7.0.0)进行开发。我需要发送电子邮件以确认客户注册。出于测试目的,我只想使用我的标准GMail帐户向我自己发送电子邮件。我已经尝试过PHP的本机mail()函数,但这不起作用,我怀疑这是因为GMail使用了某种特殊的身份验证。

所以我下载了PHPMailer(5.2.13)。我不太确定如何使用Composer进行自动加载,所以我只是将以下文件下载到我的项目顶级文件夹中:

class.phpmailer.phpclass.pop3.phpclass.smtp.phpclass.phpmaileroauthgoogle.php

我将它们包含在我的php测试页面顶部:

require_once "./class.phpmailer.php";
require_once "./class.pop3.php";
require_once "./class.smtp.php";
require_once "./class.phpmaileroauthgoogle.php";

其余的测试代码来自PHPMailer ReadMe示例:

$mail = new PHPMailer;
$mail->isSMTP(); 
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;                            
$mail->Username = 'myUsername@gmail.com';  
$mail->Password = 'myPassword';  
$mail->SMTPSecure = 'tls'; 
$mail->Port = 587;
$mail->setFrom('myUsername@gmail.com', 'Mailer');
$mail->addAddress('myUsername@gmail.com', 'Recipient');
$mail->isHTML(true); 
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->Subject = 'Test email';
$mail->Body = 'Test message';
if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    echo 'Message has been sent';
}

我的代码在到达if(!$mail->send()) {行时会挂起。

我的日志文件中没有出现任何PHP错误,但PHP代码(通过测试页面的JS脚本中的JQuery调用调用)显然已停止,并且没有返回到JS脚本。

我错过了任何PHPMailer文件吗?我有语法错误吗?我是否需要使用OAuth2代码,如果是,我该如何设置?我应该获得另一个(非GMail)帐户进行测试吗?对初学者有什么想法吗?

2 个答案:

答案 0 :(得分:0)

require("./class.phpmailer.php");
$mail = new PHPMailer();
$mail->CharSet = 'UTF-8';
$mail->IsMail();
$mail->setFrom('myUsername@gmail.com', 'Mailer');
$mail->addAddress('myUsername@gmail.com', 'Recipient');
$mail->isHTML(true); 
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->Subject = 'Test email';
$mail->Body = 'Test message';
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}

尝试查看是否有任何错误。

答案 1 :(得分:0)

我在向同一个电子邮件地址发送电子邮件时遇到问题。一些服务器认为无效/不需要的消息并且不会接受它返回错误,该错误通常被php文件中的一个catchall默认错误测试编码结构截获。只是一个想法希望它有所帮助。