我有一个 PHP 脚本在 FreeBSD 8.0、sendmail、PHP 5.2.11 (cli) 下通过 cron 运行。
CSV 的第一行由以下行定义:
$content .= "\n" . 'first_name,last_name,address1,address2,city,state_province,postal_code,country' . "\n";
在迁移到当前服务器之前,这个脚本运行良好,但是现在它有一个小故障:
如果电子邮件是通过 Outlook 接收的,则 Excel 中的第一行如下所示:
ate_province postal_code country
这在文本编辑器中:
ate_province,postal_code,country
我在开头添加了一个额外的“\n”,看到它在删节的字符串中添加了一个字符,所以我尝试添加 31,果然 Outlook、我的文本编辑器和 Excel 看到了一个完美的文件。
然后我登录到 Gmail 并下载了应该是完全相同的文件,因为它是完全相同的电子邮件。我在 Excel 和我的文本编辑器中打开它,除了 31 个换行符我应该找到什么......
有人对正在发生的事情有什么建议吗?
// 每个请求链接到带有标题的电子邮件 http://pastebin.com/wuyVf9HP
// 编辑根据 XzKto 的请求添加整个邮件例程
if (fwrite($handle, $content) === FALSE) {
die("Cannot write to file ($filename)");
}
$message = "Here is the file (comma-separated values) of addresses for\n";
$message .= $pm_row['title'] . " Requests ($now_YmdHMS).\n\n";
$data_email = $pm_row['fulfillment_data_email'];
$data_email_cc = "$pm_row[fulfillment_data_email_cc],$developer_email";
$subject = $pm_row['title'] . " Requests ($now_YmdHMS)";
$random_hash = md5(date('r', time()));
$headers = "From: xxxx <tourism@xxx.org>\r\nReply-To: tourism@xxx.org\r\nCc:$data_email_cc";
$headers .= "\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";
$attachment = chunk_split(base64_encode(file_get_contents($filename)));
$output = "
--PHP-mixed-$random_hash;
Content-Type: multipart/alternative; boundary='PHP-alt-$random_hash'
--PHP-alt-$random_hash
Content-Type: text/plain; charset='iso-8859-1'
Content-Transfer-Encoding: 7bit
$message
--PHP-alt-$random_hash
Content-Type: text/html; charset='iso-8859-1'
Content-Transfer-Encoding: 7bit
$message
--PHP-alt-$random_hash--
--PHP-mixed-$random_hash
Content-Type: application/zip; name=$now_YmdHMS.$pm_row[handle].csv
Content-Transfer-Encoding: base64
Content-Disposition: attachment
$attachment
--PHP-mixed-$random_hash--";
mail($data_email, $subject, $output, $headers);