2012-10-11 10 views
6

phpmailerを使用して自分のウェブサイトにメールを送信しています。私のコードはうまく動作しますが、電子メールの本文には、ランダムな場所に感嘆符が入っていることがあります。私のコードは次のとおりです:phpmailerを使用してメール本文に感嘆符が表示されます

$mail->SetFrom(FROM_EMAIL,FROM_NAME); //emailid of sender(admin)     
$mail->Subject = 'Subject here.'; //subject of email 
$mail->AddAddress(Address here); //emailid of user(recipient) 
$content = 'some html code here'; 

$mail->MsgHTML($content); //this is body of email 
$mail->Send(); 

これはうまくいきます。しかし、感嘆符が時々来る理由を見つけることができません。 あらかじめありがとうございます...

+0

感嘆符 '!'または疑問符 '?' ??多くの場合、HTMLメールを表示しているクライアントが文字セットを誤って解釈すると(メッセージが誤って報告されるため)、無効な文字は '?'として表示されます。 –

+0

'$ mail-> CharSet = 'UTF-8';' –

答えて

8

電子メールのメッセージは1行に998文字を超えることはできません。

追加してみてください、

$mail->WordWrap = 50; 
+0

がまだ同じエラーを返すことはありません – CodeWarrior

+1

http://www.tinyfrogsoftware.com/the-story-of-the-rogue-exclamation-マーク・ハウ・ミー・ロスト - 私の人生の4時間/ 希望することができます。 –

+3

または '$ content = 'ここにいくつかのhtmlコード'の後に' $ content = wordwrap($ content、50); 'を追加してみてください; –

3

私はこれが遅いですが、私のために働いた代替ソリューションがあります知っている:

は、base64を使用して、メッセージ全体をエンコードするために、この行を使用します。

$message = chunk_split(base64_encode($message)); 

次に、ヘッダーを追加してください。

$headers .= "Content-Transfer-Encoding: base64\r\n\r\n"; 

これは、メッセージがbase64でエンコードされていることをメールクライアントに伝えます。

0

私は後の長い、コードの一行だけが役立つはず、私はあなたがphpmailerのを使用している場合は、あなたのHTML

$emailContent = '<p>some large html</p>'; 
$mail->msgHTML(wordwrap($emailContent, 50)); 
1

をWORDWRAP必要があることを発見した検索も、この問題を持っていた:

$mail = new PHPMailer(); 
$mail->Encoding = 'base64'; 

これは内部的にContent-Transfer-Encoding:base64とchunk_split(base64_encode($ message))を行います。

関連する問題