• ベストアンサー

Perlから送信するメールのヘッダー情報

お助け願います。 PerlのMIMEモジュールでメールを送信するコードを作成しております。 Entityで送信データを構成しましたが、To(宛先)が複数ある場合の記述法がどうもわかりません。 $sTo = encode_mimeword(&jpConv('ほげ太郎','B','iso-2022-jp').'<hoge@foo.jp>'; $sFrom = 省略 $sSubj = 省略 $sData = 省略 $oMime = MIME::Entity->build(       To     => $sTo,       From   => $sFrom,       Subject  => $sSubj,       Type    => 'text/plane;charset="iso-2022-jp"',       Data    => $sData,       Encoding => "7bit" ); ↑このコードの中に2つ以上の宛先を記述する方法が不明。 なお、smtpオブジェクトで複数の宛先が指定できていますのでメールの 送信そのものはできています。よって、受信したメールのヘッダーを見ると ひとつの宛先しか書かれていないという状態になってしまっています。

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

  • ベストアンサー
  • poppo64
  • ベストアンサー率57% (11/19)
回答No.2

よくわかりませんが、単にコンマでつなぐだけで良いのではないでしょうか。 #宛先リスト @recipients = ( encode_mimeword(&jpConv('太郎','B','iso-2022-jp').'<hoge2@foo.jp>', encode_mimeword(&jpConv('次郎','B','iso-2022-jp').'<hoge2@foo.jp>', encode_mimeword(&jpConv('サブ郎','B','iso-2022-jp').'<hoge3@foo.jp>', ); # コンマで連結する $sTo = join ',', @recipients ;

komorebi99
質問者

お礼

お手数おかけしました。 カンマで繋ぐところをベタ繋ぎにしていました。<m(__)m>

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

その他の回答 (1)

回答No.1

アドレスは、複数でも普通にカンマ区切りで書けば届くと思うのですが、それではダメだったのでしょうか? To => 'hoge@hoge.jp, moge@hoge.jp'

komorebi99
質問者

お礼

お手数おかけしました。 カンマで繋ぐところをベタ繋ぎにしていました。<m(__)m>

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

関連するQ&A

  • Sendmailで送信すると本文にメールヘッダーが出る

    いつもお世話になります。 PerlでSendmail送信プログラムは何回か作ったことが有るのですが、いつもと同じように作っているつもりにも関わらず、送信されたメール本文の1~2行目に Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP が表示されます。 コードは$mailtoや$mail_from、$mail_subjectなどをMIMEエンコードしてから下記の様なコードでメールヘッダーを作成し $header = <<END; To: $mailto Bcc:$mail From: $mail_from<$mail> Subject: $mail_subject Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP END #メールの本文を下記のように作成 $body = <<END; メール本文 END $mbody=jcode::jis($body); #Sendmailで送信する。 open(MAIL, "| $SENDMAIL -i -t -f $mail") or die("ERROR: exec sendmail."); print MAIL $header, $mbody; close MAIL; というコード-です。 なにが原因かおわかりの方宜しくお願いします。

    • ベストアンサー
    • Perl
  • UTF8コードでのメール送信

    現在、以下の内容でメールサーバおよびシステムを運用してます。 レンタルサーバを以下の内容で OS:FreeBsd DB:postgresql (eucコードで運用) PG:perl5.8.8  (eucコードで記述) 最近、当システムから携帯電話(スマートフォン含む)へのメール送信で受信側(携帯)で文字化けが多くなっている。それで、システムの一部のUTF8化しようと思いました。それで、メール送信のライブラリを以下のように修正してみたが、本文が文字化けしてしまいます。なぜ文字するか原因がわかりません。 以下のソースはUTF8Nで記述しています。 ※システム全部をUTF8コード化やDB(POSTGRESQL)もUTF8にする案もありますが、 改修作業が大きくて作業時間が少ない方法も模索しています。 どなたかご教授願います。 binmode(STDOUT, ":utf8"); use Encode; use Encode qw(from_to); use MIME::Base64; use MIME::Entity; use Net::SMTP; use MIME::Words qw (:all); sub sendmail() { my ($mail_date) = @_; <==メールのハッシュ配列(DBに登録されているメールの件名、本文) my $smtp_server = $mail_date->{SMTPsrv}; my $smtp_port = '25'; # 送信者のメールアドレスを設定する。 my $mail_from = $mail_date->{MailFr}; # 宛先のメールアドレスを設定する。 my $mail_to = $mail_date->{MailTo}; # メールの件名を設定する。 from_to($mail_date->{Subjct},"euc-jp","utf8"); #UTF8に変換 $utf8_str_sub = $mail_date->{Subjct}; # メールの内容を設定する。 my $message; my $utf8_str; from_to($mail_date->{Message},"euc-jp","utf8"); #UTF8に変換 $message = $mail_date->{Message}; $utf8_str = $message; # メールヘッダを作成する。 # from、to、件名共にMIME-Header(UTF-8)へエンコードします。 my $mail_header; $mail_header = "From: " .encode('MIME-Header-ISO_2022_JP',$mail_from)."\n"; $mail_header .= "To: " .encode('MIME-Header-ISO_2022_JP',$mail_to) ."\n"; $mail_header .= "Subject: ".encode('MIME-Header-ISO_2022_JP',$utf8_str_sub) ."\n"; # UTF-8とbase64 encodeを使う事を明記します。 $mail_header .= "MIME-Version: 1.0\n"; $mail_header .= "Content-type: text/plain; charset=utf-8\n"; $mail_header .= "Content-Transfer-Encoding: base64\n"; $mail_header .= "\n"; # SMTPでメールを送る。 my $SMTP = Net::SMTP->new($smtp_server,Port=>$smtp_port); $SMTP->mail($mail_from); $SMTP->to($mail_to); $SMTP->data(); $SMTP->datasend($mail_header); $SMTP->datasend(encode_base64(encode('utf8', $utf8_str))); $SMTP->dataend(); $SMTP->quit; }

  • Perlでのメール添付送信のエラー

    PerlでメールにZIPファイルを添付して送信したいです。 http://homepage3.nifty.com/hippo2000/perltips/perlmail.htm#1.2 http://perltips.twinkle.cc/perl/mail_mime_attached_file.php 上記のサイトを参考に以下のプログラムを組んでみました。 するとエラーメッセージが画像のような感じででてきました。 おそらく、なんか文字コードがおかしいのかもしれないのですが、どこから手をつけていいのかわかりません。 どなたかお助け下さいm(__)m 前回も別の問題で助けていただいたのですが、文字コードの問題でした。他の部分は全くひっかからないのに、この部分で40時間ほど悩んでおります・゜・(ノД`;)・゜・ ======================================== sub mail_push { # サーバー、アカウント、パスワード、ポート、送信元アドレス、送信先アドレス、題名、本文、送るべきファイル1(空の場合は無視)、送るべきファイル2(空の場合は無視) my ( $mailhost, $mail_username, $mail_password, $mailport, $from_mail, $to_mail, $subject, $message, $file1, $file2 ) = @_; # 正しいメールの形なのか調べる if ( $to_mail eq '' ) { print "送り先のメールアドレスが空のようです\n"; # ERR } elsif ( $to_mail =~ /^([a-zA-Z0-9\.\-\/_]{1,})@([a-zA-Z0-9\.\-\/_]{1,})\.([a-zA-Z0-9\.\-\/_]{1,})$/ ) { # 実際に送る my $smtp = Net::SMTP->new($mailhost, Port => $mailport); $smtp->auth($mail_username, $mail_password); $smtp->mail($from_mail); $smtp->to($to_mail); $smtp->data(); my $mime = MIME::Entity->build( Type => 'multipart/related', From => $from_mail, To => $to_mail, Subject => $subject, Type => 'text/plain;charset="iso-2022-jp"', Data => $message, Encoding => "7bit"); # エラーがでてくる箇所 $mime->attach( Path   => 'c:/buromaga1.jpg', Type   => 'Application/octet-stream', Encoding => 'Base64',); $smtp->datasend($mime->stringify);# ERR $smtp->dataend();# ERR # SMTP終了 $smtp->quit; } else { print "送り先が正しいメールの形式ではありません\n"; # ERR } }

    • ベストアンサー
    • Perl
  • Perl メールフォーム

    Perl勉強中です。ご教示お願いします。 #!/usr/bin/perl -w use Encode qw(from_to encode); use Net::SMTP; use strict; my $from = 'xxxx@xxxxx.jp'; my $mailto= 'xxxx@xxxxx.jp'; my $mailcc= 'xxxx@xxxxx.jp'; my $subject = 'ホームページからのお問い合わせ'; from_to($subject, 'shiftjis', 'iso-2022-jp'); encode('MIME-Header-ISO_2022_JP', $subject); my $header = << "MAILHEADER"; From: $from To: $mailto CC: $mailcc Subject: $subject Mime-Version: 1.0 Content-Type: text/plain; charset = 'ISO-2022-JP" Content-Trensfer-Encoding: 7bit MAILHEADER my $message = "テスト"; from_to($message, 'shiftjis', 'iso-2022-jp'); my $smtp = Net::SMTP->new('xxxx-xxxx.jp'); if ( !$smtp ) { print "メールサーバーにアクセスできません!"; exit; } #メール送信 $smtp->mail($from); $smtp->to($mailto); $smtp->to($mailcc); $smtp->data(); $smtp->datasend($header); $smtp->datasend($message); $smtp->dataend(); $smtp->quit; 現在ここまでできています。 「ホームページ→お問い合わせクリック→メール送信」 そして、今回教えていただきたいのが、 イメージなのですが、 ホームページ→お問い合わせクリック→メールフォームのページに移動→内容入力 →確認ボタンクリック→確認画面→送信ボタンクリック→送信+送ってきた人へ自動返信(定型文) という風にしたいのですが、どうすればいいのかわかりません・・・ できればコードを教えて頂ければ嬉しいです。

    • ベストアンサー
    • Perl
  • windowsメールで送信できない時がある。

    windowsメールでメールを作成し送信すると送信済みアイテムに記録されるのですが、実際には、相手にはメールが届きません。送信済みアイテムにある宛先を右クリックしプロパティの詳細を見ると To: =?iso-2022-jp?B?T To: =?utf-8?Q? というような表記がある時に相手にメールが届いていないように思います。 ただ全く、送信できないとは言えません。amazon monotaro等には送信でき、注文できます。 なんとか解決策を教えていただけないでしょうか。

  • 送信メールの宛先に・・?

    最近、メールを送信した後で送信フォルダを見てみると ?ISO-○○○○-JP?B?Im○hLWt○bm○i? <相手のメルアド>・・・と宛先に表示されています。 アドレス帳から宛先を確定してメールを書き、送信しているのですが今までにこういう経験がありません。 いったい、どうしてこういう表示がされるのでしょうか? 尚、○には数字が入っています。

  • ヘッダーについて

    今、HTMLメールを送信しようと考えています。 受信側のメーラの設定も考えるとテキストメールも 対応していたほうがいいかとおもうんですが・・・ *************************************** From:xxxx To:xxxxx Subject=?iso-2022-JP?B?xxxxxxxx MIME=Version:1.0 Content-Type:multipart/alternative; boudary="----=NextPart_000"; X-Priority:3 This is multi-part message in MIME format ----=NextPart_000 Content-type:text/plain charset="iso-2022-jp" Content-Transfer-Encording:7bit; こんにちは ----=NextPart_000 Content-Type:text/html charset="iso-2022-jp" Content-Transfer-Encording:quoted-printable <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <body> <font color=="red">こんにちは</font> </body> </html> ----=NextPart_000 ********************************************** メール送信の内容を上記のようにきじゅつしたのですが、 HTMLメール設定者は赤色の”こんにちは”、 TEXTメール設定者は黒色の”こんにちは”と表示させたい のですが、うまくいきません。 どこか問題点などはあるでしょうか? アドバイス宜しくお願い致します。m(_ _)m

  • Perl メール フォーム

    ホームページのメールフォームについて教えてください。 現在ホームページで、お問い合わせページを作っている最中です。 そこで、現在下記のコードまでできております。 #!/usr/bin/perl -w use Encode qw(from_to encode); use Net::SMTP; use strict; use warnings; use Encode; use CGI; my $p = new CGI; #メールアドレス設定 my $from = 'aaaa@aaaaa.jp; my $mailto= 'aaaa@aaaaa.jp; my $mailcc= 'aaaa@aaaaa.jp; #サブジェクト設定 my $subject = 'ホームページからのお問い合わせ'; from_to($subject, 'shiftjis', 'iso-2022-jp'); encode('MIME-Header-ISO_2022_JP', $subject); #メールヘッダー設定 my $header = << "MAILHEADER"; From: $from To: $mailto CC: $mailcc Subject: $subject Mime-Version: 1.0 Content-Type: text/plain; charset = 'ISO-2022-JP" Content-Trensfer-Encoding: 7bit MAILHEADER #メール本体設定 my $message = "a"; #my $subject = $p->param('subject'); #文字コードをJISに変換 from_to($message, 'shiftjis', 'iso-2022-jp'); #メール送信オブジェクト設定 my $smtp = Net::SMTP->new('aaaaaaa.jp'); if ( !$smtp ) { print "メールサーバーにアクセスできません!"; exit; } #メール送信 $smtp->mail($from); $smtp->to($mailto); $smtp->to($mailcc); $smtp->data(); $smtp->datasend($header); $smtp->datasend($message); $smtp->dataend(); $smtp->quit; これだと、ホームページのボタン等をクリックすると メールは送られます。 差出人が'aaaa@aaaaa.jp 件名がホームページからのお問い合わせ 内容がa です。 これは、コード内にこう書いているから必然的にこれがくるわけなのですが、 そうではなく、 ホームページでお問い合わせボタンがありそこに <a href="http://aaaaaa.jp/cgi/mailform.pl"><img src="img/share/mail.gif" width="100" height="50" alt=""></a> mailform.plもしくはmeilform.htmlを表示させ下記のコードで表示されるページにアクセスし #!/usr/bin/perl <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>メールフォーム</title> </head> <body> <h1 class="title">メールフォーム</h1> <form method="post" action="mail.pl"> <input type="hidden" name="a" value="exec"> 件名(Subject) :<br /> <input type="text" name="subject" size="80" value=""><br /> 宛先(To) :<br /> <input type="text" name="to" size="80" value=""><br /> 差出人(From) :<br /> <input type="text" name="from" size="80" value=""><br /> 本文(Body) :<br /> <textarea name="body" rows="10" cols="65"></textarea><br /> <p> <input type="submit" value="送信"> </p> </form> </body> </html> ここで 差出人、件名、内容を入力し、送信のボタンを押すと my $subject = 'ホームページからのお問い合わせ'; my $message = "a"; my $from = 'aaaa@aaaaa.jp; この3つをmailform.plもしくはmailperl.htmlで 入力した内容で送信をしたいのですが、 これのやり方を教えてほしいです。。。 当方ホームページ作りも初心者で、Perlも最近はじめたとこでまだ理解できていないとこも 多いため説明がわかりにくいかもしれません・・・ その時は、ご指摘ください;; また、業者に頼むことは考えておりません・・・ 参考書やいろいろネットサーフィンしてみたのですが、上手くできません どうかお力添えをお願い致します!

    • ベストアンサー
    • Perl
  • PHP の mb_send_mail で HTMLメール送信

    mb_send_mailでHTMLメールを送信すると 受信メールのヘッダ情報が勝手に追加されてしまいます。 【PHP内で指定しているヘッダ】 $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-2022-jp' . "\r\nX-Mailer: PHP/".phpversion(); 【受信メールのヘッダ情報】 Mime-Version: 1.0 Mime-Version: 1.0 Content-Type: text/html; charset=iso-2022-jp Content-Type: text/plain; charset=ISO-2022-JP というように、指定もしてないContent-Type: text/plainが 追加されたり、Receivedも同じように勝手に追加されてしまいます。 考えられる原因を教えていただけますか?

    • ベストアンサー
    • PHP
  • メールのFromに半角ピリオドが入るとエラーが・・・

    PEARのメール送信について教えてください。 現在PEARのMailと、mime.phpを使用してメール送信をするプログラムを組んでいるのですが、エンコードの仕方が悪いのかメールのFromに半角ピリオド、半角カンマなどが入るとエラーが出てしまいます。 以下がそのコードの主要部分ですが、対応策がありましたらご教授ください。よろしくお願いいたします。 --------------------------------------------------------- //ヘッダーのFromエンコード(問題の部分?) $headers['From'] = mb_encode_mimeheader(mb_convert_encoding( $mail_from_name , "ISO-2022-JP", "EUC-JP"))."<".$mail_from.">"; $objMail =& Mail::factory('sendmail'); $original = mb_internal_encoding(); $headers['Subject'] = mb_convert_encoding( $sbj , "ISO-2022-JP" , "EUC-JP" ); mb_internal_encoding("ISO-2022-JP"); $headers['Subject'] = mb_encode_mimeheader($headers['Subject'],"ISO-2022-JP"); mb_internal_encoding($original); $crlf = "\n"; $mime =& new Mail_mime($crlf); $mime->setHTMLBody($body); $build_param = array( "html_charset" => "EUC-JP", "text_charset" => "ISO-2022-JP", "head_charset" => "ISO-2022-JP", ); $body = $mime->get( $build_param ); $headers = $mime->headers($headers); $objMail =& Mail::factory('sendmail'); $result = $objMail->send( $mail_to , $headers , $body );

    • 締切済み
    • PHP