0

私は非常に奇妙な問題に直面しています.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 文字セットを設定していますが、まだこの問題が発生しているため、何が問題なのかを指摘していただければ幸いです。

よろしくショアイブ

4

2 に答える 2

0

ほとんどの場合、次の「メール」を作成するためにspam/unwantdメールを使用した結果、メールを送信する速度が速すぎます。sleep(4)4 sec delay

于 2013-09-09T10:13:13.317 に答える