我想弄清楚这个问题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的用户,当你的“从”邮件发送者是不是验证发送者也会出现此错误。
要添加验证发件人:
登录到您的亚马逊AWS控制台: https://console.aws.amazon.com
从可用的AWS应用程序的列表中选择“亚马逊SES”
选择,在“验证发件人”,“电子邮件地址” - >“验证新的电子邮件地址”
导航到新的发件人的电子邮件,点击确认电子邮件的链接。
和你所有的设置。
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