2012/06/16

perlからGMail

Net::Smtp::TLSでgmailのsmtpを叩いていたプログラムが

invalid SSL_version specified at /opt/local/lib/perl5/site_perl/5.12.4/IO/Socket/SSL.pm line 308.

とか言って、エラーを吐く。
 色々調べたけど解決策がわかんないので、Net::SMTP::SSLを使って書きなおした。


  my $smtp = Net::SMTP::SSL->new($mailhost,Port => 465);
  if ($smtp->auth($mail_username,$mail_password, required=>1)) {
    $smtp->mail($from);
    $smtp->to($to);
    $smtp->data();
    my $oMime = MIME::Entity->build(
      From     => $from,
      To       => $to,
      Subject  => $subject,
      Type     => 'text/plain',
      Charset  => 'UTF-8',
      Data     => $body);
    $smtp->datasend($oMime->stringify);
    $smtp->dataend();
    $smtp->quit;
  }else{
    print "failed to send mail\n";
  }

これで一応送信できるようになった。
typeとcharsetを指定しないと文字化けするので、utf8じゃない人は適当に変えてください。

あと、
use Net::SMTP::SSL;
use MIME::Entity;
をお忘れなく。

0 件のコメント: