Linuxだと、phpのmb_send_mail()などからSMTPを利用することができない

php
スポンサーリンク

Linuxだと、php.iniでSMTPサーバを利用することができない

php.iniのSMTPの設定が効かない時

対策

  • php ライブラリ使う
  • SPFレコード(sendmail 元のドメインの)を設定する

mb_send_mail()に直接SMTPサーバを指定する。。。ことはできないらしい。

ChatGPT3.5先生に聞いたところ、mb_send_mail()関数の引数に直接SMTPの情報を記述することでSMTPサーバを利用できるんだそうな。

だが、Copilot(ChatGPT4)に聞いたら無理とのこと。ハルシネーションでしたかな?

copilotによると、

  • ライブラリを利用する
  • mail() でSMTPを指定する

ができるとのこと。

mail()でSMTPを指定する

<?php
$to = "recipient@example.com";
$subject = "Subject";
$message = "This is the message.";
$headers = "From: sender@example.com";

// sendmailコマンドのパスとオプションを指定
$sendmail_path = "/usr/sbin/sendmail -t -i -f sender@example.com -S smtp.example.com:587 -au your_username -ap your_password";

// メールを送信
mail($to, $subject, $message, $headers, "-f sender@example.com -S smtp.example.com:587 -au your_username -ap your_password");
?>

日本語を取り扱う場合、文字化けを防ぐheaderの設定が必要。

<?php
$to = "recipient@example.com";
$subject = "テストメール";
$message = "これはテストメールです。";

// ヘッダーの設定
$headers = "From: sender@example.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=UTF-8\r\n";
$headers .= "Content-Transfer-Encoding: 8bit\r\n";

// メールの送信
mail($to, $subject, $message, $headers);
?>

コメント