質問
-
スタンダード
PHPによるメール送信 -
本文:
PHP7.3でのmb_send_mailでtrueが返ってきてはいるのですが相手方にメールが届いていないようでしたので、こちらの環境で同様の事象での成功例などありましたらばご教授願えればと思いました。
----
$to = $_POST['mails'];
if (empty($to)) {
$msg = "送信先が空でした" ;
} else {
$subject = "テストメール";
$message = "これはテストメールです。";
$from = "no-reply@******.jp";
$headers = "From: $from\r\n";
$headers .= "Reply-To: $from\r\n";
$headers .= "Return-Path: $from\r\n";
$headers .= "X-Mailer: PHP/" . phpversion() . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=UTF-8\r\n";
//SMTPサーバー設定
ini_set("SMTP", "sv**.star.ne.jp");
ini_set("smtp_port", 587); // SMTPポート番号
// SMTP認証情報
ini_set("sendmail_from", "no-reply@***.jp");
ini_set("sendmail_password", "***");
mb_language("Japanese");
mb_internal_encoding("UTF-8");
$mailSuccess = mb_send_mail($to, $subject, $message, $headers);
if ($mailSuccess) {
$msg = "メールが送信されました。";
} else {
$msg = "メールの送信に失敗しました。";
}
}
--- - 緊急度:通常投稿者:transformさん投稿時間:2024/01/04 15:09
回答 No.12667
-
本文:
どこかのサンプルプログラムをそのままコピーして使っているのだろうけれど、昔と違ってspamに厳しい現在の大抵のメールサーバーでは、spam判定されて拒絶されることが多いのではないかと思いますよ。
(典型的なspamのパターンと一致していますからね...)
spammerにアドバイスするのは本意ではないので、詳細は書きませんが、少なくとも嘘の情報は書かないことをお勧めします。少なくとも、発信人などは受信可能なアドレスを指定しましょう。googleのメールサーバー宛てのメールなら、googleの「メールが届かないのですが?」関連のヘルプのページを熟読されることをお勧めします。
- 投稿者:ジョバンニさん 投稿時間:2024/01/05 03:46
質問者からのコメント
回答ありがとうございます。
SPAM判定が怖いので使用しているメールアドレスネットオウルで取得した実在するメールアドレスで試したのですが、どういう理屈ではねられているのか、ダメでしたね。受信テストには自社サーバーのメールアドレスを使っていました。
おっしゃれれている通り、スパムと共通するような内容なのでどうにも参考情報などがなく
行き詰った結果、PHPMailerを導入したところ、あっさり解決しました。
サーバー名やアカウント:パスワードなどは同一だったので、もうこの時点で思考を放棄してしまいました。どのみち大した案件でもなかったので。お騒がせしました。
回答 No.12668
この回答がベストアンサーです
//宛先
$to = "test@example.com";
//差出人
$header = "From: "."test@example.com";
//件名
$subject = "送信テスト";
//本文
$body = "送信テスト";
if(mb_send_mail($to,$subject,$body,$header)){
//echo "メール送信成功しました。";
}else{
//echo "メール送信失敗しました。";
}
上記のようなコードで、問題なく送信できてますが・・。
2023/11、PHP8.1.22 で確認済み
■
Gmailは、2024年1月から、かなり厳しくなってますけどね。
https://blog.google/products/gmail/gmail-security-authentication-spam-protection/
存在しないメールアドレスをFromに指定するだけでも、受信拒否しそうな感じですけど・・
■
>相手方にメールが届いていないようでした
自身で確認できるメールアドレスで、確認すればよいのでは?!
スターサーバーのメールサーバーを使うのなら
外部のメールアドレスに送信するだけで、確認できますよね?!
あと、PHPのプログラムの動作的には、内部のメールアドレスに送信すれば
確認可能です。
PHPがやるのは、SMTPサーバーにメールを投げかけるまで・・。
それ以降は、メールサーバーや外部のメールサーバーの役目。
■
うまく届くメールアドレスと、届かないメールアドレスがある場合は
多分、PHPのプログラムと関係ないところの話である可能性が高いような?!
質問者からのコメント
回答ありがとうございます。送信にはネットオウルで取得したメールアドレスを用い、受信には業務で使用している自社のメールアドレスを用いていましたが、どうにもうまくいかず、以前に同様のことをやった際のソースも宛にならずという状況でしたので、ご相談させていただきました。
結局、自己解決しましたが、GitHubからPHPMailer6.91をダウンロードして、sshが使えないのでcomposerを使わない方法で組み込んであっさり解決しました。
何が原因だったのか、皆目わからずでしたが、ご面倒をおかけしました。