3

phpメール機能を使用して自分のサイトからメールを送信しようとしています。サイトのユーザーは、メールをhtml形式で入力します。メール機能をテストしましたが、次のようなメールテキストが小さい場合に機能します。

this is an email 

ただし、長いメールを入力すると、mail()関数は返されます1が、実際にはメールは受信されません。メールを送信するコードは次のとおりです。

$email_message = $_POST['email_mssg_from_form'];
$ret = mail($to, $subject, $email_message);

私は$email_message使用の内容を正規化しようとしました:

$email_message = wordwrap($email_message, 70, "\r\n");      
$email_message = addslashes($email_message);

しかし、これは役に立ちませんでした。引用符や長い行を他にどのように処理するかわかりません。通常、ユーザーがフォームにメールを入力すると、テキストが連続して表示され、段落のみが\r\n

4

1 に答える 1

4

メッセージの長さが不整合を引き起こしているという同様の問題がありました。これは私のためにトリックをしたものです:

次の行を使用して、base64を使用してメッセージ全体をエンコードします。

$email_message = chunk_split(base64_encode($email_message));

次に、メールにヘッダーを追加し、次のヘッダーを追加します。

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

これにより、メッセージがbase64でエンコードされていることがメールクライアントに通知されます。

mail()関数の呼び出しを次のように変更する必要があります。

mail($to, $subject, $email_message, $headers);
于 2013-02-11T02:28:04.473 に答える