私は数日間この問題に苦しんでおり、解決策が見つからないことに出くわしたものを読んで試しています: これが私がやりたいことの結論です: 私はメンバー限定システムを持っています. メンバーがメッセージ ボードにメッセージを投稿すると、他のメンバー全員にメールで通知が届きます。単純。PHP スクリプトを使用して受信者 (電子メールと名前) のリストを CSV ファイルに作成し、ファイルを保存して後で cron ジョブで開き、電子メールを送信します。単純。ああ...名前は、MySQL DBに保存されているため、ヘブライ語のスクリプトです。スクリプトを手動で試してみました (ブラウザから実行したところ、うまくいきました)。ただし、cron で実行すると、名前が読み取られず、空白のままになります。
while($arrMailAttrib = fgetcsv($hFile))
{
$sAptName = $arrMailAttrib[0];
$sAptNum = $arrMailAttrib[1];
$sTo = $arrMailAttrib[2];
$sSubject = $arrMailAttrib[3];
$sMsgURL = $arrMailAttrib[4];
$sBody = "<span style=\"font-family: Arial, Helvetica, sans-serif; direction: rtl !important; vertical-align: right; display: block;\" lang=\"he\" dir=\"rtl\"> <p>שלום $sAptName (מספר חבר $sAptNum),</p> <p>הודעה חדשה בנושא '$sSubject' נוצרה בלוח המודעות הוירטואלי.</p> <p>על מנת לצפות בהודעה ישירות במערכת <a href=\"$sMsgURL\">כאן</a></p> <p>על מנת להכנס למערכת הכנס ל: <a href=\"http://www.somesite.com\">http://www.somesite.com</a> </p> <p><font size=\"-1\" color=\"#999999\">זוהי הודעת אימייל אוטומטית. נא לא להגיב לכתובת אימייל זו.</font></p> <p> </p> </span>";
if(defined('_DEBUG_')) {fputs($hLogFile, "sending email with subject '$sSubject' to $sTo\n");}
mail($sTo, $sSubject, $sBody, $sHeaders);
}
CSV は、DB から取得した名前と電子メールをそのまま使用して作成されています。これがエンコーディングと関係があることは確かですが、正確に何を指し示すことができないようです。CSV ファイルの数行を次に示します。
1,בהיר,someone1@gmail.com,הודעה נסיונית,http://www.somesite.com/_new.message_present.php?fldMsg=111
כהן,2,someone2@gmail.com,הודעה נסיונית,http://vwww.somesite.com/_new.message_present.php?fldMsg=112
שפיר,4,someone3@hotmail.com,הודעה נסיונית,http://www.somesite.com/_new.message_present.php?fldMsg=113
ליבוביץ,5,someone4@metis.asia,הודעה נסיונית,http://www.somesite.com/_new.message_present.php?fldMsg=114
注目に値するもう 1 つのことは、「Content-type:text/html」というテキストだけで、cron ジョブからの電子メールにエラーが表示されることです。
ちなみに、メールは受信者に問題なく届き、メールの本文はヘブライ語で表示されます。欠けているのは件名と名前だけです。
誰 ...?