• 締切済み

mb_sendmailのエラーについて質問です。

mb_sendmailのエラーについて質問です。 mb_sendmailでメールを送信する際に、 $re = mb_sendmail(…); という使い方をして、$reでメールの送信の成功と失敗を見分けようとしましたが、$re自体にはPHPの機能としての返り値はあるものの、実際にメールが届いたか届かなかったかの判断はできませんでした。例えばメールアドレスが間違っていたりして実際にメールが届いていない場合などはそのエラーをどういう風に拾えばよいでしょうか? PHPは自体は非常に安定しているので mb_sendmailでエラーが返ってくるようなことは殆どありませんが、メールそれ自体が届かないということは比較的たくさんあります。 そのようなエラー情報を取得するにはどうしたらよいでしょうか? 現在、Ubuntu 9.10で自前の送信メールサーバー(Postfix)とLAMP環境で開発しております。 よろしくお願いします。

  • Tinte
  • お礼率40% (40/98)
  • PHP
  • 回答数3
  • ありがとう数4

みんなの回答

  • mpx
  • ベストアンサー率71% (149/209)
回答No.3

>> 例えばメールアドレスが間違っていたりして実際にメールが届いていない場合などは >> そのエラーをどういう風に拾えばよいでしょうか? 既出のようにメールが相手に届いたことを確実にチェックする方法は有りませんが、 メールサーバーが自前なら相手のメールサーバにメッセージが受信されたかどうかまでは 判断する方法が有ります。  MTA(Postfix)のログから相手のMTAの応答を確認するだけです。 ただし、送信直後にチェックしても分かりません。最近Greylisting方式の チェックしているMTAも多いので、cronなどを使って後でまとめて チェックするスクリプトを組んでおく必要があります。

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.2

既に出ている通りですが、届いたかどうかは分かりません。 一番、確実なのはメールを送ってから、電話で「メール届いた?」と確認する事です。 冗談です。 電話で済む用件をメールで送り、メールが届いたかを電話で確認すると言う笑い話です。 真面目な話しをすると、最近の登録フォームとかって 「まず空メールを送ってください」っての多くないですか? んで、その空メール送ってきた送信者にユニークなIDつけたURLを返してあげる。っていう手順。 あれは、メールアドレスの入力間違いとかを防ぐ為と、到達性のあるメールアドレスであることを確認する為にやってるようなもんです。 そんな事をしないとメールの到達性が確認できないもんだから、みんな そうしてるのかなぁ。と思います。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>メールそれ自体が届かない しょせんメールなので届かなかったことはわかりません。 届いたかどうかわかってしまってはスパムの温床になるため、 最近ではエラーも返してこないのが当たり前なので

関連するQ&A

  • sendmail

    PerlやPHPにはsendmailを使ってメール送信する関数があったと思いますが、sendmailというメールサーバを起動していなくてはいけないのですか? メールサーバならsendmailサーバの他にpostfixやqmailなどがあるじゃないですか。

  • mb_sendmailで送信できない

    環境はphp5+fedora5+postfixの自宅サーバです。 以下のようにphp5からmb_send_mailしたところ、 sendmailは出来ているようなのですが(status=sent (250 ok dirdel))、 相手先にメールが届かず困っています。 (受信箱にも迷惑メールフォルダにも入ってない模様) 宛先を自ドメインにするとメールも届きます。 メール送信が成功したのに、相手にメールが届かない理由として どのような要因が考えられるでしょうか? よろしくお願いします。 PHP---------------------------------------------------------- mb_language("Ja") ; mb_internal_encoding("EUC-JP") ; $to="○○○○○@yahoo.co.jp"; $subject="タイトル"; $body="本文"; $from = "○○○○○@yahoo.co.jp"; $header="From: " .$from."\r\nContent-Type: text/plain;"; $result = mb_send_mail($to,$subject,$body,$header); if($result == TRUE){ echo "メール送信OK"; } else { echo "メール送信ERR"; } postfixログ---------------------------------------------------------- 自宅サーバからyahooのアドレスに送ったログ [50] : Oct 8 15:13:01 自宅サーバ postfix/smtp[11989]: 7D5E01658035: to=, relay=mx2.mail.yahoo.co.jp[203.141.44.127], delay=0, status=sent (250 ok dirdel) [49] : Oct 8 15:13:01 自宅サーバ postfix/qmgr[2093]: 7D5E01658035: from=, size=466, nrcpt=1 (queue active) [48] : Oct 8 15:13:01 自宅サーバ postfix/cleanup[11987]: 7D5E01658035: message-id=<20061008061301.7D5E01658035@自宅サーバ.org> [47] : Oct 8 15:13:01 自宅サーバ postfix/pickup[11744]: 7D5E01658035: uid=48 from= [46] : Oct 8 15:12:52 自宅サーバ postfix/qmgr[2093]: 64D671658035: removed

    • ベストアンサー
    • PHP
  • sendmailでエラーがでます

    PHPを勉強しはじめ、まず今までVBS(IIS)で書いていたメール送信プログラムを PHPで書き始めました。 環境:XP-SP2、PHP5.0.4、Apache2.0.53 mail_input.phpから、名前、メールアドレス、自由記入欄 を作り、その内容を 自分のメールアドレスに送るプログラム(sendmail.php)をPHPで作っています。 sendmail.php のサビの部分は以下です。 mb_send_mail($_POST['_email'],$_POST['_email],$body,$header_info); エラーメッセージは Fatal error: Call to undefined function mb_send_mail() in C:\Program Files\Apache Group\Apache2\htdocs\sendmail.php on line 9 です。 mb_send_mail()の設定が間違っているように思われます。 この為のphp.ini のマルチバイト関数修正点は 修正前: SMTP = localhost ;sendmail_from = me@example.com 修正後: SMTP = rapid.ocn.ne.jp sendmail_from = *****@rapid.ocn.ne.jp 上記2点以外はいじっておりません。 なおIISの時は、上記のような処理が出来ていたので、プロバイダ(ocn)のせいではないと思われます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • mb_send_mail()が使えない

    WebからPHPのmb_send_mail関数を使用してメールを送信しようとしていますが、なぜか送信されません。 原因についてお分かりになればお教えください。 また、下記以外に必要な情報があればお教えください。 コマンドライン上でのmailコマンドによるメール送信は可能な状態です。 sendmailの代わりにqmailをインストールしているため、/usr/sbin/sendmailから/var/qmail/bin/sendmailへシンボリックリンクを貼っています。 また、PHPのmail()は"Call to undefined function: mail()"エラーとなりますが、mb_send_mail()ではエラーが発生しません。 ●OS:TurboLinux7 ●言語:PHP4.3.3 ●phpのconfigure時のオプション:  ./configure --with-apxs=/usr/sbin/apxs \  --enable-mbstring ●/usr/local/lib/php.iniのsendmail_path設定:  sendmail_path = /var/qmail/bin/sendmail ●テスト用PHPのソース(実行すると常に「メール送信エラー」になります) <?php $ans = mb_send_mail("メールアドレス","件名","本文"); if ($ans) { print "<P>メール送信完了</P>"; } else { print "<P>メール送信エラー</P>"; } ?>

    • ベストアンサー
    • PHP
  • mb_send_mailで送ったエラーメールの行方

    phpのmb_send_mail関数ですがデフォルト設定でsendmailを使ってメールを送信しているようです。エラーメールを送信した場合、エラーメールが普通に戻って来ません、どこにエラーメールが行ってるか教えてください。 エラーメール=アドレスが正しくないメールや送信時にエラーが出たメールアドレスなど

    • ベストアンサー
    • PHP
  • mb_send_mail sendmailについて

    PHPが使える無料レンタルサーバーで会員管理画面を作ろうとしているものです。だいぶ完成してきて、残りは登録した人に会員登録したことをメールで自動送信することができるようになれば完成というところまできました。無料レンタルサーバーの利用についての説明の中ではsendmailは利用可となっています。私はメール送信のプログラムを作ったことがないので、しきりに本を読みながら悪戦苦闘しております。本の中のサンプルを参考に下のようなソースを書いて、テストしていますがダメでした。 $mailto="*****@***.biglobe.ne.jp"; $mailsbj="新規登録"; $mailbody="登録者ができました"; $mailheader="From:****@yahoo.co.jp\nReply-To:*****@***.biglobe.ne.jp\nX-Mailer:phpversion();" mb_language("ja"); if(mb_send_mail($mailto,$mailsbj,$mailbody,$mailheader)){ echo "メールの送信に成功"; } else{ echo "メール送信失敗"; } 利用している無料レンタルサーバ内のsendmailの説明の中には sendmailのパス:/usr/lib/sendmail と記入されています。 web上で色々調べてみましたが、どうも今一よくわかりませんでした。mb_send_mailは使えないと言うことでしょうか? もし、sendmailを使用してメール送信をする場合にはどんなソースを書けばよいのでしょうか。 どなたかご指導宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • mb_sendmailでモブログ投稿

    アメーバブログなどで、専用メールアドレス宛に携帯からメールを投稿すると ブログに書き込みができるという機能がありますが、(モブログ機能) PHPのmb_sendmailでFromを携帯メールにしてやってみたところ アドレス偽装扱いになってしまいるのか書き込みできません。 このようにモブログで送信者を判定して投稿を受け付ける仕組みの場合、 正しい送信者であることをどこで判断しているのでしょうか? 結果的には複数のサイトに同時投稿できるような仕組みを作りたいと考えています。 実際にその携帯を所有し、ブログも自由に設定変更できるという環境です。 PHPは5.3あたりを想定しています。 何か良い方法はないでしょうか?

    • 締切済み
    • PHP
  • sendmailの改行について

    sendmailの改行について PHPでsendmailにてメールを送信しようとしています。 mb_language("uni"); mb_internal_encoding("SJIS-WIN"); $body = "おはようございます\n"; $body = "こんにちわ\n"; $body = "さようなら\n"; mb_send_mail($to, $subject, $body, $header); 上述のコードにてメールを送信すると、 本文内の改行コードが無視されて、 「おはようございますこんにちわさようなら」 と送信されてしまいます。 改行されるようにするにはどうすれば宜しいでしょうか? 因みにPHP_EOL定数を使っても結果は同じです。

    • ベストアンサー
    • PHP
  • SendMailがエラーを返さない

    VBでBSMTP.DLLのSendMailを使ってメール送信するプログラムを使っています。 相手先アドレス不正などの場合は、SendMailの戻り値でエラーを識別できるのですが、正常終了しているにも関わらずそのメールが相手先に到着しないという現象が出ています。 原因として、どういうことが考えられるでしょうか? 心当たりのある方がいらっしゃいましたら、ご指導をお願いいたします。 ret = SendMail(SMTP_SVNm, szTo, szFrom, szSubject, szBody, szFile) If Len(ret) <> 0 Then MsgStr = "送信エラー" Else MsgStr = "送信完了" End If

  • sendmailのエラーを知りたい

    こんにちわ。 sendmailを使って、メールの自動送信を行っています。 その際に、送れなかったsendmailのエラーは どのようにすれば取得できるのでしょうか? ------ ちなみに、レンタルサーバーで、pos.toネット というところを使用しています。 (www.pos.to) perl はバージョン 5.005_03 のようです。 sendmailは、sendmailと互換のMTAである qmail というものだそうです。 補足もいたしますので、よろしくお願いします。 参考サイトの紹介も大歓迎いたします。 _

専門家に質問してみよう