アプリ版:「スタンプのみでお礼する」機能のリリースについて

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);
とするとメールを送信することが出来ません。
何故でしょうか?教えてください。

A 回答 (2件)

原因は$mail_toの中身がそのまま1つの引数として認識しているため


'****@hogehoge.com','**@mogemoge.com'
という1つの文字列がメールアドレスとされているからです。
Perlの仕様についてそれほど詳しくないのですが、おそらく、変数の評価を先に行い、その後に展開を行なっているので、引数が1つと認識しているためだと思います。

eval関数を使用して先に変数を展開してみるとうまく行くかもしれません。
例:
$smtp->to(eval($mail_to));
    • good
    • 0

wolfwoodさんの仰るとおり、


'****@hogehoge.com', '**@mogemoge.com'
がひとつのメールアドレスとして解釈されています。

この場合は、配列を使えばいけると思います。

@mail_to = ('****@hogehoge.com','**@mogemoge.com');
$smtp->to(@mail_to);
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!