phpMailer:无法实例化邮件功能

时间:2015-03-12 20:08:54

标签: php phpmailer

我创建了一个表单,使用phpMailer将结果通过电子邮件发送给网站所有者。当然,在我添加所有者的电子邮件地址之前,我使用我来测试该表单是否有效。当我使用我的电子邮件时,表单发送完美,但是,当我使用所有者的地址时,它会抛出错误"无法实例化邮件功能"并且不会发送表格。只有与所有者域关联的电子邮件地址才会出现此错误。知道为什么会这样吗?

如果我在命令行中键入它,它可以正常工作:

echo 'test' | mail -s 'test' me@example.com

编辑:我最初没有使用SMTP,但现在配置如下所示。现在出现错误消息" SMTP错误:以下收件人失败xxx@somedomain.com"最终的结果仍然是一样的。它可以通过电子邮件发送到许多gmail测试地址,但与所有者的email@hisdomain.com有关。此外,使用SMTPDebug,它现在产生错误" RCPT TO命令失败:550此处没有此类用户"然而,所有者的电子邮件通过gmail,outlook等方式通过电子邮件发送时没有问题。

phpMailer代码:

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug = 1;
$mail->Debugoutput = "error_log";
$mail->Host = "mail.mydomain.com";
$mail->SMTPAuth = true;
$mail->Username = "admin@mydomain.com";
$mail->Password = "XXXXXXXXXXXXXXX";
$mail->CharSet = 'UTF-8';
$mail->AddReplyTo($emailAddress);
$mail->SetFrom("admin@mydomain.com");

$mail->AddAddress($toAddress,$toName);

$mail->Subject = $emailSubject;
$mail->isHTML(true);
$mail->Body = $emailBody;
$mail->AltBody = strip_tags($emailBody);

// Attempt to send the e-mail       
if (!$mail->send()) {
    //error handling
}

2 个答案:

答案 0 :(得分:1)

您应该尝试使用以下特定错误消息进行检查:

确保您可以使用常规的php mail()函数。创建一个空白页面并使用php mail()发送测试电子邮件。如果可行,可能是您的SMTP与特定用户域有问题。设置gmail SMTP或其他SMTP以发送电子邮件:

$mail->IsSMTP();
$mail->Host = "smtp.domain.com";

// optional
// used only when SMTP requires authentication  
$mail->SMTPAuth = true;
$mail->Username = 'smtp_username';
$mail->Password = 'smtp_password';

您可以分享您的phpMailer来源供我们查看吗?

答案 1 :(得分:0)

设置$mail->SMTPDebug = 2;,以便查看服务器的内容和read the troubleshooting guide

您使用的是不加密的身份验证,这不是一个很好的组合,很多服务器都不允许这样做。加上这个:

$mail->SMTPSecure = 'tls';
$mail->Port = 587;

您的代码基于一个旧示例,因此您可能也使用旧版本的PHPMailer;从github获取最新信息。