• ベストアンサー

Net::SMTPでのメール送信について

Net::SMTPモジュールを利用してメール送信をしています。 複数の宛先にメールを送る場合に、 my ($smtp) = Net::SMTP->new($smtp_server); $smtp->to('****@hogehoge.com', '**@mogemoge.com'); とすれば、複数に送れるのですが、 my ($mail_to) ='\'****@hogehoge.com\',\'**@mogemoge.com\''; として $smtp->to($mail_to); とするとメールを送信することが出来ません。 何故でしょうか?教えてください。

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

  • ベストアンサー
  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.1

原因は$mail_toの中身がそのまま1つの引数として認識しているため '****@hogehoge.com','**@mogemoge.com' という1つの文字列がメールアドレスとされているからです。 Perlの仕様についてそれほど詳しくないのですが、おそらく、変数の評価を先に行い、その後に展開を行なっているので、引数が1つと認識しているためだと思います。 eval関数を使用して先に変数を展開してみるとうまく行くかもしれません。 例: $smtp->to(eval($mail_to));

その他の回答 (1)

  • Ethersky
  • ベストアンサー率71% (168/235)
回答No.2

wolfwoodさんの仰るとおり、 '****@hogehoge.com', '**@mogemoge.com' がひとつのメールアドレスとして解釈されています。 この場合は、配列を使えばいけると思います。 @mail_to = ('****@hogehoge.com','**@mogemoge.com'); $smtp->to(@mail_to);

関連するQ&A

専門家に質問してみよう