循环遍历地址数组时,PHP mail()发送空内容
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了循环遍历地址数组时,PHP mail()发送空内容,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2839字,纯文字阅读大概需要5分钟。
内容图文
![循环遍历地址数组时,PHP mail()发送空内容](/upload/InfoBanner/zyjiaocheng/703/2359e681656844c49f1cbaf8105e1396.jpg)
我有一个客户希望他们的销售人员能够填充高度设计的2列html模板并使用这些模板发送电子邮件.每封电子邮件最多6个收件人.
解决方案非常有效,直到他们决定要分别发送给每个收件人.没有CC,没有BCC.
在我循环之前,我想到了我曾经简单地破坏了地址数组的地方,但是这会生成带有空内容的电子邮件.主题行很好,但内容是零字节.
有趣的是,如果我插入die()并将$html_text转储到屏幕上,我会看到我期望的内容.
最初我在循环外设置内容,主题等,但看到空的内容,我想也许我应该在循环中设置变量虽然这对我没有意义.它什么都没改变.
这是循环代码:
if (count($_SESSION['recipients']) > 0) {
foreach ($_SESSION['recipients'] as $to) {
$template = $_SERVER['DOCUMENT_ROOT'] . '/leads/templates/'.$_SESSION['templateFile'];
ob_start();
include($template);
$html = ob_get_contents();
ob_end_clean();
if (strlen($html) == 0) {
echo "The template at $template did not load.";
exit;
}
$bullets = unslash($_SESSION['bullets']);
$bullets = preg_replace('/<li>/', '* ', $bullets);
$bullets = strip_tags($bullets);
$TextMessage = strip_tags(unslash($_SESSION['message'])) . "\n\n" . $bullets;
$notice_text = "This is a multi-part message in MIME format.";
$plain_text = str_replace(' ',' ', $TextMessage);
$html_text = $html;
$email = $_SESSION['user']->email;
$name = $_SESSION['user']->first_name . ' ' . $_SESSION['user']->last_name;
$from = "$name <$email>";
$subject = unslash($_SESSION['subject']);
$semi_rand = md5(time());
$mime_boundary = "==MULTIPART_BOUNDARY_$semi_rand";
$mime_boundary_header = chr(34) . $mime_boundary . chr(34);
$body = "$notice_text
--$mime_boundary
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
$plain_text
--$mime_boundary
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
$html_text
--$mime_boundary--";
if (@mail($to, $subject, $body,
"From: " . $from . "\n" .
"MIME-Version: 1.0\n" .
"Content-Type: multipart/alternative;\n" .
" boundary=" . $mime_boundary_header)) {
$out .= " Email sent to " . htmlentities($to) . ".<br />";
} else {
$out .= " Email to htmlentities($to) NOT sent successfully!";
}
} // foreach
任何建议非常感谢!
2010.08.06 – 编辑:我尝试用硬编码文本替换$html_text和$plain_text,并发现相同的结果:发送空邮件.还尝试在循环外移动$mime_boundary和$mime_boundary_header生成但没有成功.
但是,如果我添加die(‘< pre>‘.$body.’< / pre>‘);在发送空邮件之后,我立即看到了我在HTML和文本以及边界中所期望的一切……这是一个例子:
This is a multi-part message in MIME format.
--==MULTIPART_BOUNDARY_94e43eed6cf2826fc5787c860814066e
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
My plain text here
* Bullet point 1
* Bullet point 2
--==MULTIPART_BOUNDARY_94e43eed6cf2826fc5787c860814066e
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
// RENDERED HTML CONTENTS SHOW UP HERE
解决方法:
也许在循环时显示每个组件变量的内容可以产生一些见解?
看起来像NULL可能会以某种方式出现在$body组合中 – 无论如何都是本能.
内容总结
以上是互联网集市为您收集整理的循环遍历地址数组时,PHP mail()发送空内容全部内容,希望文章能够帮你解决循环遍历地址数组时,PHP mail()发送空内容所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。