(70) PHP8.0でメールヘッダが表示されるようになったが?

投稿者: | 2021年3月11日

1,294 views

1. 問題発生

PHP7.4 から PHP8.0 に変更した。

すると…
メール受信時に、メール本文にメールヘッダの内容が表示されるようになった。

なぜか?
調査中…

後日追記

追記: 2022/06/12

上記の投稿から1年3か月が経過した。
久しぶりに PHP ver.8でメール送信してみることにした。

結果は…
自然治癒

こんな言い方は作ってくださっている方々に対して失礼だが…
ありがたいことに修正してくださったようだ。

因みに今回試した PHPのバージョンは PHP ver.8.0.17 だ。

良かった良かった!

とは言え、いつ再発するかわからないので、以下にテストページを置いておく。
PHP versionが更新される度に、ここからメールを送信して試してみよう。
https://php8.dogrow.net/_test/001_sendmail/

ところで原因は?

こちらのブログで説明してくださっている。
PHP8.0にアップグレードしたらメールヘッダがおかしくなった話
PHPプログラム内で、リターンコードの記述が変わったことが原因とのこと。
有用な情報をありがとうございます。m(_ _)m

でも、PHP ver.8.0.17のソースファイルを見てみたところ…

$ wget https://www.php.net/distributions/php-8.1.7.tar.gz
$ tar -zxvf php-8.1.7.tar.gz
$ vi ./php-8.1.7/ext/standard/mail.c

上記ブログの指摘個所は変更されていない。
あれっ? 別要因なのか?

fprintf(sendmail, "To: %s\r\n", to);
fprintf(sendmail, "Subject: %s\r\n", subject);
if (hdr != NULL) {
    fprintf(sendmail, "%s\r\n", hdr);
}
fprintf(sendmail, "\r\n%s\r\n", message);
ret = pclose(sendmail);

追記: 2025/04/13

現時点では、PHPMailer を使ってメール送信コードを書くと上手く行く。
 → ということは、やっぱり自作コードがいけないのか…
  → ToDo: 後で PHPMailerのソースコードを見て勉強しよう。

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require '/home/ユーザー名/www/libs/PHPMailer/src/PHPMailer.php';
require '/home/ユーザー名/www/libs/PHPMailer/src/SMTP.php';
require '/home/ユーザー名/www/libs/PHPMailer/src/Exception.php';

$mail = new PHPMailer(true);

try {
    $mail->CharSet = 'UTF-8';     // 日本語対応
    $mail->Encoding = 'base64';   // 安全な本文エンコード
    $mail->isHTML(false);         // テキストメール指定

    // sendmailを使う
    // $mail->isSendmail();  // 明示してもOK、省略でも可

    $mail->setFrom('your@domain.com', 'あなたの名前');
    $mail->addAddress('to@example.com', '受信者の名前');
    $mail->addReplyTo('reply@example.com', '返信先の名前');

    $mail->Subject = 'テストメール';
    $mail->Body    = "こんにちは!これはテストメールです。\n返信先も設定済みです。";

    $mail->send();
    echo "メール送信成功!";
} catch (Exception $e) {
    echo "メール送信失敗: {$mail->ErrorInfo}";
}

アクセス数(直近7日): ※試験運用中、BOT除外簡易実装済
  • 2025-07-11: 0回
  • 2025-07-10: 0回
  • 2025-07-09: 1回
  • 2025-07-08: 0回
  • 2025-07-07: 0回
  • 2025-07-06: 0回
  • 2025-07-05: 0回
  • (70) PHP8.0でメールヘッダが表示されるようになったが?」への2件のフィードバック

    1. Hisatomi Kenji

      初めまして。
      すみません。
      mb_send_mailという関数を使用しているのですが、ヘッダーの一部が憑依されてしまい困っています。
      解決されておりましたら、追記をお願いしたいと思っています。
      宜しくお願い致します。

      返信
      1. user 投稿作成者

        コメントをいただき、そんなこともあったと思い出して試してみました。
        PHP ver.8.0.17では、本投稿で「問題発生」とした現象が発生しなくなっていました。

        返信

    コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です


    日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)