私は非常に奇妙な問題に直面しています.HTMLテーブル(データ付き)と同じデータのCSV添付ファイルを含むユーザーのリストに電子メールを送信するphpスクリプトを作成しました。問題は、そのスクリプトが 10 通を超える電子メールを送信する場合です。一部の電子メールでは、
--=_f3be233a9b22e88524e1539166c49be0 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; 文字セット=UTF-8
メール本文と HTML テーブルのフォーマットも失われましたが、そのメールでは CSV データはまったく問題ありません。
基本的に、スクリプトの目的は、ユーザーのサブスクライブ情報 (データベース テーブル) に従ってデータを選択し、それをサブスクライブ ユーザーに早朝に送信することです。毎晩データベース テーブルが新しいデータで更新され、そのデータは PHP スクリプトによって取得され、電子メールで送信されます。さらに、その PHP スクリプトは、Windows スケジュール タスクによってトリガーされます。以下はアプリケーションのコードです。
if($ix>0)
{
while(odbc_fetch_row($subRes2))
{
$s_email=odbc_result($subRes2, 1);
//echo $s_email;
$from = "Sender <alerts@xxx.com>";
$to = "$s_email";
$subject = "Information_DB:" . $arrayE . " Restored on: " . "-";
$host = "xxxinternal.xxxx.com";
$port = "25";
//disabled the username and password because currently sending unauthenticated email.
// $username = ""; //<> give errors
//$password = "";
//add the email headers 29082013 1008 - SMS
$headers = array ('From' => $from,
'To' => $to,
'Subject' => $subject,
'Content-Type' => 'text/html; charset=UTF-8');
$smtp = Mail::factory('smtp',
array ('host' => $host,
'port' => $port,
'auth' => false));
//'username' => $username,
//'password' => $password));
$subject = "Results from query";
$crlf = "\n";
$mime_params = array(
'text_encoding' => '7bit',
'text_charset' => 'UTF-8',
'html_charset' => 'UTF-8',
'head_charset' => 'UTF-8'
);
// Creating the Mime message
$mime = new Mail_mime($crlf);
// Setting the body of the email
//$mime->setTXTBody($body);
$mime->setHTMLBody($body);
$file='./wamp/www/' . $csv_filename;
$mime->addAttachment($csv_filename,'application/octet-stream');
$body = $mime->get($mime_params);
$headers = $mime->headers($headers);
// Sending the email
// $mail =& Mail::factory('mail');
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
// echo "<script>window.close()</script>";
}
else {
echo("<p>Message successfully sent!</p>");
}
}}}
else
{
$from = "Sender <alert@xxx.com>";
$to = "$s_email";
$subject = "Information_DB:" . $arrayE . " Restored on: " . "-";
//$host = "ssl://smtp.gmail.com";
$host = "xxxinternal.xxxx.com";
$port = "25";
//disabled the username and password because currently sending unauthenticated email.
// $username = ""; //<> give errors
//$password = "";
$headers = array ('From' => $from,
'To' => $to,
'Subject' => $subject,
'Content-Type' => 'text/html; charset=UTF-8');
?>
残念ながら、テストしたとき、この問題は見られませんでした。しかし、それが UAT になったとき、多くのユーザーがこの問題を抱えており、データベースと一致しているようです。たとえば、ユーザー A がスペインとロシアのデータを購読している場合、ロシアのデータ メール (メールに前述のヘッダーが含まれる) で一貫して問題が発生しますが、スペインのデータ メールは問題ありません。ライブでは、おそらく毎日約 100 通のメールを送信しています。
メールの MIME 設定で UTF-8 文字セットを設定していますが、まだこの問題が発生しているため、何が問題なのかを指摘していただければ幸いです。
よろしくショアイブ