0

このコードを使用してメールを送信しています:

public function sendMail($receiver, $subject, $message){

    $header = "Content-type: text/html";

    mail($receiver, $subject, $message, $header);
}

メールは送信されますが、後でメールを開くと内容 ($message) が完全ではありません。かなり長いテキストですが、これが理由でしょうか?メールメッセージがカットされているのはなぜですか?

ありがとう!

4

2 に答える 2

0

どのようにしていっぱいになったのかわかりませんが、基本的なパラメーターが欠落しており、ヘッダーの割り当てなどがあります.

mail()機能の説明はこちらをご覧ください。HTML の自動折り返しには、wordwrap()HTML コンテンツが 1 行にある場合、関数を使用します - メッセージの切断を防ぎます。

サンプルコード:

$from   = "one@mail.com";
$mailto = "two@mail.com";
$reply  = "three@mail.com";

$subject = "Test";
$message = "<html><body><strong>TEST</strong><p>Bla bla bla</p></body></html>";

$headers  = "MIME-Version: 1.0\n";
$headers .= "Content-Type: text/html; charset=UTF-8\n";
$headers .= "Content-Transfer-Encoding: 7bit\n";
$headers .= "From: $from\nReply-To: $reply\n";

$check = mail($mailto, $subject, $message, $headers);

if ($check) { echo "OK"; } else { echo "ERROR"; }

サンプル送信機能:

function sendmail($receiver, $subject, $message) {

  $from = "mail@mail.com"; // sender mail

  $headers  = "MIME-Version: 1.0\n";
  $headers .= "Content-Type: text/html; charset=UTF-8\n";
  $headers .= "Content-Transfer-Encoding: 7bit\n";
  $headers .= "From: $from\n";

  $check = mail($receiver, $subject, $message, $headers);

  if ($check) { return true; } else { return false; }  
}

または拡張サンプル送信機能:

function sendmail($receiver, $subject, $message) {

  $from_mail = "mail@mail.com"; // sender mail
  $from_name = "Sender Mail"; // mail name

  $from = '=?UTF-8?B?'.base64_encode($from_name).'?= <'.$from_mail.'>';

  $headers  = "MIME-Version: 1.0\n";
  $headers .= "Content-Type: text/html; charset=UTF-8\n";
  $headers .= "Content-Transfer-Encoding: 7bit\n";
  $headers .= "From: $from\n";

  $check = mail($receiver, '=?UTF-8?B?'.base64_encode($subject).'?=', wordwrap($message,76,"\n"), $headers);

  if ($check) { return true; } else { return false; }  
}

base64_encode()入力文字を予防的に変換し、拡張 ASCII コードまたはその他の非標準文字 (分音符号、ロゴグラムなど) に適したものにします。

wordwrap()送信前に HTML コンテンツを予防的に分割します。単一行の HTML コンテンツにのみ適しています。標準は 1 行あたり 76 文字です ( chunk_splitを参照)。SMTP サーバーは 1 行あたり少なくとも 1,024 文字をサポートする必要があります。サポートされていない場合は、自分で設定する必要があります。

于 2013-09-16T23:40:59.813 に答える
0

ヘッダー エントリの最後に改行を使用する

$header = "From: ...\n";
$header .= "Content-type: text/html\n";
mail($receiver, $subject, $message, $header);
于 2012-06-08T11:47:51.617 に答える