2,107 views
この記事は最終更新から 440日 が経過しています。
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除外簡易実装済2026-06-27: 1回 2026-06-26: 2回 2026-06-25: 2回 2026-06-24: 0回 2026-06-23: 6回 2026-06-22: 2回 2026-06-21: 5回