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);
?>
コメント