PHPMailer的 - 下面的SMTP错误:数据不被接受(phpmailer - The foll

2019-08-20 07:22发布

我想弄清楚这个问题6小时。 但是,没有什么道理。 下面是这种情况; 有一个良好的格式化HTML模板。

$mail_body = '
    <b>Message Num :</b> 769<br />
    <b>Message Date :</b> 2013-04-08 09:03:21<br />
    <b>Name :</b> John Doe<br />
    <b>Phone :</b> 123456789<br />
    <b>E-mail :</b> abcdf@somedomain.com<br />
    <b>Message :</b> Here is the message info<br />
';

下面是收件人的电子邮件的阵列;

$recipients = array("abc@something.com","xyz@somtehing.com");

一切看起来罚款和电子邮件准备send.Here是PHPMailer的配置;

$mail = new PHPMailer(); 
$mail->IsSMTP();
$mail->From = "noreply@something.com"; 
$mail->FromName = "TEST";
$mail->WordWrap = 50;

foreach($recipients as $mail_add) {
    $mail->AddAddress($mail_add);
}
$mail->IsHTML(true);
$mail->Subject = "TEST Subject";
$mail->Body = $mail_body;
if(!$mail->Send()) {
    echo $mail->ErrorInfo;
} else { 
        echo "Mail sent...";
}

当我测试它的一切都是一样的。 但有时电子邮件被发送。 有时,未发送。 给我以下错误: The following SMTP Error: Data not accepted.

我希望我解释

Answer 1:

您的服务器这么想的允许不同的发送者和用户名,你应该配置: $mail->From$mail->Username



Answer 2:

对于谁与亚马逊SES与PHPMailer的协同工作AWS的用户,当你的“从”邮件发送者是不是验证发送者也会出现此错误。

要添加验证发件人:

  1. 登录到您的亚马逊AWS控制台: https://console.aws.amazon.com

  2. 从可用的AWS应用程序的列表中选择“亚马逊SES”

  3. 选择,在“验证发件人”,“电子邮件地址” - >“验证新的电子邮件地址”

  4. 导航到新的发件人的电子邮件,点击确认电子邮件的链接。

和你所有的设置。



Answer 3:

有趣的是,我有完全相同的问题,我的问题是,我的连接已超时。 为了能够看到我的连接更多的细节,我加$ MAIL-> SMTPDebug = 4; 我的PHPMailer(查找如何捕捉调试因为默认输出功能回声)。

这里的结果:

SMTP -> get_lines(): $data was ""
SMTP -> get_lines(): $str is ""
SMTP -> get_lines(): $data is ""
SMTP -> get_lines(): timed-out (10 seconds)
SMTP -> FROM SERVER:
SMTP -> ERROR: DATA not accepted from server: 

默认的超时时间设置为10秒。 如果您的应用程序可以支持更多,这条线添加到您的PHPMailer:

$mail->Timeout = 20;


Answer 4:

设置PHPMailer的调试工作,看看通用的消息背后的“真正的”错误“SMTP错误:数据不接受”在我们的情况下,消息的文本被触发SMTP服务器的垃圾邮件过滤器。

  $email->SMTPDebug = true;


Answer 5:

在大小有一定的消息,它通过MAIL-$>车身设置时弄乱的内容。

您可以测试它,如果它与小消息效果很好,但不具有较大(超过4-6 KB)工作,那么这就是问题所在。

这似乎是$ MAIL->身体问题,这样你就可以通过$ MAIL-手动设置HTML正文> MsgHTML($消息)解决这个问题。 然后你就可以尝试只能由$ MAIL-> AltBody添加非HTML体。

希望我能帮助,可随时提供更多的细节信息。



Answer 6:

我只用

$mail->Body    = $message;

而对于一些sumbited形式PHP被返回错误:

SMTP错误:数据未accepted.SMTP服务器错误:DATA END命令失败详情:此消息归类为垃圾和可能无法传递SMTP代码:550

我得到了它修好后$ MAIL->正文= $消息添加以下代码:

$mail->MsgHTML = $message;
$mail->AltBody = $message;


Answer 7:

尝试设置26端口,这已经修好了我的消息“不接受数据”的问题。



Answer 8:

我打这个错误与PHPMailer的+亚马逊SES。 该PHPMailer的错误是不是很描述:

2: message: SERVER -> CLIENT: 554 Transaction failed: Expected ';', got "\"
1: message: 
2: message: SMTP Error: data not accepted.

对我来说,这个问题是根本,我有以下内容类型:

$phpmailer->ContentType = 'text/html; charset=utf-8\r\n';

但是,它不应该有它的断行:

$phpmailer->ContentType = 'text/html; charset=utf-8';

......我怀疑,这是从我们的旧版本遗留代码。 所以基本上,三重检查每$ PHPMailer的设置,您要添加 - 最小的细节计数。



Answer 9:

我正经历着同样的问题。 在我的情况下发送邮件是时间,因为我的Exchange服务器被转发电子邮件到互联网上的服务器。 该服务器已经超过了它的带宽配额。 显然,PHP的邮件有内建的超时,这是不是足够长的时间,看看实际的消息。



Answer 10:

我们通过Gmail的SMTP服务器发送电子邮件,我们得到的PHPMailer这个确切的错误有时,当我们打我们的Gmail发送的限制

你可以检查它是否是通过进入Gmail和尝试手动发送电子邮件发生在你同样的事情。 在我们的例子,显示有关发送限制的更实用的错误消息。

https://support.google.com/a/answer/166852?hl=en



Answer 11:

在我的cPanel情况下,我已经“注册邮件的ID”选项,其中添加我的电子邮件地址,并在30分钟后,正常工作与简单的PHP的邮件功能。



Answer 12:

如果您正在使用,然后在Office 365 SMTP网关“SMTP错误:数据不被接受。” 是,如果邮箱已满,你会得到(即使你只是从它发送)的响应。

尝试删除一些邮件从信箱中。



Answer 13:

在我的情况的问题是与邮件的内容。 当我改变内容,以更简单的内容,而无需HTML,它的工作。 但更新的PHPMailer后一切迎刃而解。



Answer 14:

杉杉你最好设置调试TRUE

$的电子邮件 - > SMTPDebug = TRUE;

或公共$ SMTPDebug的临时变化值= FALSE; 在PHPMailer的类

然后你就可以看到完整的日志中的浏览器。 对我来说是每秒太多的电子邮件

...
SMTP -> FROM SERVER:XXX.XX.XX.X Ok
SMTP -> get_lines(): $data was ""
SMTP -> get_lines(): $str is "XXX.XX.XX.X Requested action not taken: too many emails per second "
SMTP -> get_lines(): $data is "XXX.XX.XX.X Requested action not taken: too many emails per second "
SMTP -> FROM SERVER:XXX.XX.XX.X Requested action not taken: too many emails per second
SMTP -> ERROR: DATA command not accepted from server: 550 5.7.0 Requested action not taken: too many emails per second
...

在我知道了什么是确切的问题。



文章来源: phpmailer - The following SMTP Error: Data not accepted