• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:送信先のメールアドレスが存在しない場合・・)

メール送信処理時のエラーハンドリングについての質問

このQ&Aのポイント
  • メール送信処理中に送信先のメールアドレスが存在しない場合、エラーメールを受信しないようにする方法を教えてください。
  • メール送信処理時に、送信したメールアドレスが存在しない場合のエラーハンドリング方法について教えてください。
  • メール送信中に存在しないメールアドレスに送信しようとした場合、エラーメールを受信しないようにする方法について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

最近のメールサーバはVRFYなどをちゃんと返さないので、送信スクリプトの中でご希望の機能を実装するのは難しいのではないかと思います。 あえてやるなら、メールアドレスをDB化し、送信時にerrors-to:を設定して送信、戻ってきたメールを処理するプログラムを別途用意しDBにフラグを立てる、とかでしょうか。

quinted_sa
質問者

お礼

やはり・・そうですよね; DB追加は出来ないのでやはり無理になりますね・・(^^;) わざわざ参考意見ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • メール送信のFromアドレスについて

    始めまして。 taki2といいます。 Perlのメール送信で使用するFromアドレスで分からない 事がありますので、アドバイスをよろしくお願いします。 -内容- Fromをtaki@xxx.comと設定してメールを送信した場合、実際届くメールのFromには taki@xxx.com と、表示されます。 しかし、Fromを"taki@xxx.com"と設定した場合 実際届くメールのFromは "taki@xxx.com"@xxx.com と、表示されます。 ""をつけるとどうやら""の中がアカウントと認識されるみたいです。 これを""があっても@xxx.comを設定せずにしたいのですが、どうすればよいのでしょうか? ちなみにメール送信しているプログラムは以下の通りです。 sub MailSend {  my $head = $_[0];  my $body = $_[1];  my $flgMime = $_[2]; #エンコード判定フラグ my $in_return = 0; my $rc;  #メールコマンド  my $cmdMail = "/usr/lib/sendmail -t";  #文字コード変換  ##件名  &Jcode::convert( $$head{ "SUBJECT" }, "jis" ); ##本文 foreach( @{$body} ){ &Jcode::convert( $_, "jis" ) }; #ヘッダのMIMEエンコード if( $flgMime ){ $$head{ "SUBJECT" } = MIME::mimeencode($$head{ "SUBJECT" }); } #メール送信 $rc = open( OUTMAIL, "| $cmdMail" ) ; if($rc) { print OUTMAIL "From: $$head{ "FROM" }\n"; print OUTMAIL "To: $$head{ "TO" }\n"; print OUTMAIL "Cc: $$head{ "CC" }\n"; print OUTMAIL "Bcc: $$head{ "BCC" }\n"; print OUTMAIL "Subject: $$head{ "SUBJECT" }\n"; print OUTMAIL "\n"; foreach( @{$body} ){ print OUTMAIL $_."\n" }; print OUTMAIL ".\n"; close( OUTMAIL ); } else{ $in_return = 1; } return $in_return; }

    • ベストアンサー
    • Perl
  • CGI(Perl)からメールを送信するには

    ゲストブックに投稿があった際、メール(sendmail)で通知するように改造中です。 メールを送信するには、件名をMIMEエンコードするのが決まりだと知りましたが、下記の送信処理には含まれていないのでしょうか? また、送信処理に不備があるようでしたら、アドバイスを頂ければありがたいです。 送信処理は以下の通りで、書き込み処理(ログファイルに書き込む処理)の直後に加えています。 投稿者は「$in{'name'}」で、投稿内容(本文)は「$in{'body'}」です。 CGIの漢字コードはシフトJISで、改行コードはCR+LFです。 # sendmailのパス $sendmail = '/usr/sbin/sendmail'; # 送信先 $tomail = 'ooooo@ooooo.ne.jp'; # 送信者 $frommail = 'xxxxx@xxxxx.ne.jp'; # 件名 $subject = "ゲストブックに投稿がありました"; # 送信 open (OUT,"|$sendmail -t"); $send = ""; $send .= "To: $tomail\n"; $send .= "From: $frommail\n"; $send .= "Subject: $subject\n"; $send .= "\n"; $send .= "【 名 前 】 $in{'name'}\n\n"; $send .= "【 内 容 】 $in{'body'}\n\n"; &jcode'convert(*send,'jis'); print OUT $send; close (OUT); それから、もうひとつ気になることがあります。 投稿された際に送信される時とされない時があり、4~5時間後にまとめて届くこともありますが、届かないままのものもあります。 届かなかったメールはどこに行ってしまったのでしょうか? サーバの管理者へ届く・消えてしまう場合、私宛にエラーメール(?)を返すことはできないでしょうか? 差し支えなければ、こちらについてもアドバイス頂けると嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • Net::SMTPでエラーの場合のリトライ方法

    PerlのSMTP処理がエラーの場合に、リトライする方法 下記のようなPerlスクリプトを例に、質問させていただきます。2点あります。 ------------------------------------------------------------------------- 01: use Net::SMTP; 02: use Encode; 03: my($smtp,$ret); 04: $smtp = Net::SMTP->new('xxx.xxx.jp', Hello=>"xxx.com", Timeout => 120); 05: $ret = $smtp->mail($from); 06: $ret = $smtp->to($to); 07: $ret = $smtp->cc($cc) if("$cc" ne ""); 08: $ret = $smtp->data(); 09: $ret = $smtp->datasend("From:$from\n"); 10: $ret = $smtp->datasend("To:$to\n"); 11: $ret = $smtp->datasend("Cc:$cc\n") if("$cc" ne ""); 12: Encode::from_to($subject,"s-jis","jis"); 13: $ret = $smtp->datasend("Subject:$subject\n"); 14: $ret = $smtp->datasend("Content-Transfer-Encoding: 7bit\n"); 15: $ret = $smtp->datasend("Content-Type: text/plain;charset=\"ISO-2022-JP\"\n\n"); 16: Encode::from_to($body,"s-jis","jis"); 17: $ret = $smtp->datasend("$body\n"); 18: $ret = $smtp->dataend(); 19: $ret = $smtp->quit; ------------------------------------------------------------------------- ($from,$to,$cc,$subject,$body 等は上位で設定しているものとします) 質問1) 例えば、08行目でエラー($ret==0)になった場合に、リトライしたければ、 少し待って(sleep等)から、08行目からを再実行すればOKでしょうか、 それとも、05行目、あるいは、04行目のSMTP->newの再取得からやり直さなければならないでしょうか。 質問2) また、18行目でエラー($ret==0)の場合、実際にはメールは送信されるようですが、 そのまま放置しておいても特に問題ないでしょうか。 以上、よろしくお願いいたします。

  • sendmailで送信すると、迷惑メールになります

    フォームに入力された内容をperlでsendmailを使って送信すると、ウイルス対策ソフトの判定で、迷惑メールに入ってしまいます。 ▼プログラム $subject = 'テストメール'; $msg = "------------------------------------------------------------------ [名前] $name [住所] $address ------------------------------------------------------------------"; # subjectをBase64エンコード jcode::convert(\$subject, 'euc'); jcode::convert(\$subject, 'jis', 'euc', 'z'); $subject = '=?ISO-2022-JP?B?' . encode_base64($subject, '') . '?='; # 本文をJISに変換 jcode::convert(\$msg, 'jis'); &mail($to_mail, $from_mail, $subject, $msg); ▼サブルーチン sub mail{ my($to_mail, $from_mail, $subject, $msg) = @_; # sendmailによるメール発信 my $sendmail = '/usr/lib/sendmail'; # sendmailパス open(MAIL,"| $sendmail -t") || &error("メール送信に失敗しました"); print MAIL "To: $to_mail\n"; print MAIL "From: $from_mail\n"; print MAIL "Subject: $subject\n"; print MAIL "X-Mailer: Mail Form Sendmail\n"; print MAIL "Content-Transfer-Encoding: 7bit\n"; print MAIL "Content-type: text/plain; charset=\"iso-2022-jp\"\n"; print MAIL "MIME-Version: 1.0\n\n"; print MAIL "$msg"; close(MAIL); } print MAIL "Content-type: text/plain; charset=\"iso-2022-jp\"\n"; を print MAIL "Content-type: text/plain;\n"; にすれば迷惑メールにならずに済むのですが、一部の利用者(特にMacユーザー)で、送信されたメールが文字化けしているようですので、何とかcharsetの指定も入れたいと思っています。 上記のプログラムで、おかしいところがあるでしょうか? どうか、ご教示いただけますよう、よろしくお願いします。

    • ベストアンサー
    • CGI
  • sendmailで本文が文字化けします

    sendmailを使ってメールを送信していますが、下記処理中で、charsetの指定を入れないと本文は文字化けしないのですが、指定を入れると文字化けしてしまいます。 ※ちなみに、OutlookExpressはどの場合でも文字化けしないで受信できました。 どなたかご存知のかた教えていただけないでしょうか。 ソースは以下のような感じです。 require "/XXX/jcode.pl";# 文字列変換 require "/XXX/mimew.pl";# MIME エンコード # メールHEADER作成 $head = "From: $FromUser\n"; $head .= "To: $ToUser\n"; $head .= "Subject: $Subject\n"; $head .= "Mime-Version: 1.0\n"; $head .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n"; $head .= "Content-Transfer-Encoding: 7bit\n"; $head .= "\n"; # JISコード変換 $code = &jcode'convert(*head, 'jis'); # エンコード $header = &mimeencode($head); # メール本文作成 $body = "メール送信のテストです\n"; $code = &jcode'convert(*body, 'jis'); if (open(MAIL,"|/usr/lib/sendmail -f $FromUser $ToUser")){ print MAIL $header; print MAIL $body; print MAIL "\n\n"; close(MAIL); }

  • メールを文字化けしないようにしたい

    次のようにメールを送信しようとしています。 Fedora CoreはUTF-8なので、jcode.plでJISに変換しようとしています。 require "jcode.pl"; $subject = "テストメール"; $data = "これはテストメールです。"; &jcode::convert(\$subject,'jis'); &jcode::convert(\$data,'jis'); @str = "subject:$subject\n\n"); push (@str, "$data\n.\n"); これがなぜかうまくいきません。メーラーの文字コードをutf8にすると正常に表示されます。 使い方が違うのかと思ったので、次のように変えてみたところ、エラーになりました。 &jcode::convert(\$subject,'utf8','jis'); また、先頭にuse utf8;を付けてみたところ、送信できたものの文字化けが余計ひどくなりました。 インターネットで検索したり本を読んでみたりしても、よくわかりませんでした。 どうやったらJISに変換できるのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • Centos5(utf8)のperl でメール送信の関数プログラムを作

    Centos5(utf8)のperl でメール送信の関数プログラムを作成しています。 bccにもメールを送信したいのですが、呼び出される度にbccのメールアドレスの数が異なります。以下はテスト的に作った動くサンプルです。 #!/usr/bin/perl use Net::SMTP; use Encode; use strict; 1 my $ServerName = 'mail.server.jp'; 2 my $from = 'from@mailaddress'; 3 my $to = 'to@mail.address'; 4 my $bcc = 'bcc0@mail.address'; 5 my $anotherbcc = 'bcc1@mail.address'; 6 my $onemorebcc = 'bcc2@mail.address'; 7 my $smtp = Net::SMTP->new($ServerName, Debug => 0); 8 $smtp->mail($from); 9 $smtp->to($to); 10 $smtp->bcc($bcc, $anotherbcc, $onemorebcc); 11 # to ( ADDRESS [, ADDRESS [...]] ) 12 # cc ( ADDRESS [, ADDRESS [...]] ) 13 # bcc ( ADDRESS [, ADDRESS [...]] ) 14 $smtp->data(); 15 $smtp->datasend("From: $from\n"); 16 $smtp->datasend("To: $to\n"); 17 my $SUBJECT = "日本語タイトル"; 18 my $body = "日本語本文\n"; 19 Encode::from_to($SUBJECT, "utf8", "iso-2022-jp"); 20 Encode::from_to($body, "utf8", "iso-2022-jp"); 21 $smtp->datasend("Subject: ".$SUBJECT."\n"); 22 $smtp->datasend("MIME-Version: 1.0\n"); 23 $smtp->datasend("Content-Type: text/html; charset=iso-2022-jp\n"); 24 $smtp->datasend("\n"); 25 $smtp->datasend($body); 26 $smtp->dataend(); 27 $smtp->quit; 10行目の通り、メールアドレスを羅列して渡すとメールは配信されます。 メールアドレスを配列渡し( @bccarray=('bcc0@mail.address', ・・・); で@bccarrayを渡す)と配信されません。 これを関数化し、bccアドレスの数を可変にしたいのですが良い方法はないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • メールフォームの訪問者情報取得について

    ある会員専用サイトをつくってます。 こんな事を考えているのですが、うまく行きません。 (1)メールフォームから名前・メールアドレスを入力しを送信。 (2)送信を押すと名前・アドレスなどと一緒に以下の情報を取得 ●IPアドレス ※$ENV{'REMOTE_HOST'}) ●OS・ブラウザ情報※$ENV{'HTTP_USER_AGENT'} ●携帯識別番号(携帯会社別) (3)上記の情報より、 LパソコンでアクセスするとIPアドレスをチェックし会員を判別 L携帯電話からだと携帯識別番号で判別 といった仕組みをつくろうと思っています。 メールフォームは自力では無いですが、オープンソースを使用し作成しました。 ※Copyright (C) 1996-2005 杜甫々 様 とほほのWWW入門>メール送信フォーム より $ENV{●●●}を組み込めば入力情報と同時に取得できると思ったのですが、うまく取れません。 十分に理解せず他人様のソースを安易に利用しようとする私が悪い事は多分に承知しておりますが、何卒ご教授お願いします。 ---以下ソース--- #!/usr/local/bin/perl #セッティング require 'cgi-lib.pl'; require 'jcode.pl'; &ReadParse(*in); $name = "$in{'name'}"; $from = "$in{'from'}"; $subject = "$in{'subject'}"; $body = "$in{'body'}"; $to = '●●●@●●.ne.jp'; #送信前処理 &jcode'convert(*name,'jis'); &jcode'convert(*subject,'jis'); &jcode'convert(*body,'jis'); #sendmail open(MAIL, "| /usr/sbin/sendmail -t"); print MAIL "To: $to\n"; print MAIL "From: $from\n"; print MAIL "Subject: $subject\n"; print MAIL "Content-Type: text/plain;\n\n"; print MAIL "お名前:$name\n"; print MAIL "本文:$body\n"; close(MAIL); #HTML表示の前処理 &jcode'convert(*name,'sjis'); &jcode'convert(*subject,'sjis'); &jcode'convert(*body,'sjis'); $body =~ s/[\r\n,\n]/<BR>/g; #HTMLに表示 print "Content-type: text/html\n\n"; print "<HTML><BODY>\n"; print "以下のメールを送信しました<HR>"; print "お名前:$name\n<BR>"; print "メールアドレス:$from\n<BR>"; print "題目:$subject\n<BR>"; print "本文:$body\n<BR>"; print "</BODY></HTML>\n"; exit;

    • ベストアンサー
    • Perl
  • メール送信

    現在独学でPHPの勉強をしており、行き詰まってしまいここで質問をさせて頂きました。 行き詰まった内容ですがphpでメール送信のスクリプトを書いたのですが エラーが出てしまい送れません。 こちらが私が書いたスクリプトになります。 <html> <head><title>mail.php</title></head> <body> <?php $address = $_POST["address"]; $subject = $_POST["subject"]; $message = $_POST["message"]; $header = "Content-Type: text/plain;charset=iso-2022-jp"; mb_language("Japanese"); if(mb_send_mail($address, $subject, mb_convert_encoding($message, "JIS", "EUC-JP"), $header)){ print("送信完了しました。"); }else{ print("エラー:送信に失敗しました"); } ?> </body> </html> エラーの内容ですが、 Fatal error: Call to undefined function mb_language() in C:~となっております。mb_languageが使えないとの表示が出てくるのですが、 色々な本などを調べてもこれを使ってる所もありなにが問題なのか分かりません。 php.iniでの設定(mbstring.internal_encoding = EUC-JP、extension=php_mbstring.dll)の ; などは外してみたりしてるのですが どうにも分かりません。 どなたかお分かりになるかたがいましたら是非教えて頂けないでしょうか。宜しくお願い致します。

    • ベストアンサー
    • PHP
  • Perlでメール送信機能

    Perlで管理者にメール送信する機能つきの掲示板を作成しております。が、メール送信されるところまでできましたが、内部エラーが起こり処理が完結しません。 自分ではどこがおかしいのかわからないので、ヒントをひただければと思い、投稿しました。 ~途中から # 登録処理 $inq =~ s/\n//g; $inq =~ s/\r//g; open(LOG,">>$data_file") || &msg_disp("fe"); print LOG "$mc,$dt,$gname,$email,$bm,$sex,$place,$sch,$tel,$inq,$rh\n"; close(LOG); # メール通知 &mail; &msg_disp("rg"); exit; } # close sub write_data # メール通知処理 sub mail{ # ここからロジック &jcode'convert(*fn,"jis"); &jcode'convert(*tn,"jis"); &jcode'convert(*sj,"jis"); &jcode'convert(*ms,"jis"); # open(MAIL, "|$sendmail $mymail"); #本番用 ##open(MAIL, ">mail.txt"); #テスト用 print MAIL mimeencode("From: $fn <$mymail>\n"); print MAIL mimeencode("To: $tn <$mymail>\n"); print MAIL mimeencode("Subject: $sj\n"); print MAIL "Content-Transfer-Encoding: 7bit\n"; print MAIL "Content-Type: text/plain; charset=iso-2022-jp . \n\n"; print MAIL $ms; close(MAIL); }#close sub mail &mailをコメント化した結果、どうやらmailルーチンの中でエラーが起こるようです。しかし、空メールだけはちゃんと指定アドレス($mymail)へ送信されてきます。 最後、$msg_dispルーチンへはエラーが起こり行きません。 mailルーチンのどこらへんがおかしいのでしょうか?

    • ベストアンサー
    • CGI