end0tknr.hateblo.jp 以前↑このように書いて動作していた気がしますが、 googleに2段階認証が導入された為でしょううか? 動作しなくなっていたので、以下のように修正しました。
#!/usr/local/bin/perl use strict; use utf8; use FindBin; use File::Spec; use lib File::Spec->catdir( $FindBin::Bin, '../lib' ); use Encode; use Net::SMTPS; use MIME::Base64; use Data::Dumper; my $SMTP_CONF = { host => 'smtp.gmail.com', port => '587', from => 'ないしょ@gmail.com', auth_uid => 'ないしょ@gmail.com', ### NOTICE!! application password ### https://myaccount.google.com/security#signin ### https://support.google.com/mail/answer/14257 auth_pw => 'ここは、アプリパスワード' }; main(); sub main { my $ssl = 'starttls'; # 'ssl' / 'starttls' / undef my $smtp = Net::SMTPS->new( $SMTP_CONF->{host}, Port => $SMTP_CONF->{port}, doSSL => $ssl, Debug => 1 ); $smtp->auth( $SMTP_CONF->{auth_uid}, $SMTP_CONF->{auth_pw} ) or die "can't login smtp server"; my $mailto = ['ないしょ@gmail.com']; my $mailto_str = join( ',', @$mailto ); my $subject_org = 'これはテストです'; my $subject = Encode::encode( 'MIME-Header-ISO_2022_JP', $subject_org ); my $message = <<EOF; このメールはテストです EOF #メールのヘッダーを構築 my $header = << "MAILHEADER_1"; From: $SMTP_CONF->{from} Return-path: $SMTP_CONF->{from} Reply-To: $SMTP_CONF->{from} To: $mailto_str MAILHEADER_1 $header .= <<"MAILHEADER_2"; Subject: $subject Mime-Version: 1.0 Content-Type: text/plain; charset = "ISO-2022-JP" Content-Transfer-Encoding: 7bit MAILHEADER_2 $message = encode( 'iso-2022-jp', $message ); $smtp->mail( $SMTP_CONF->{from} ); $smtp->to(@$mailto); $smtp->data(); $smtp->datasend("$header\n"); $smtp->datasend("$message\n"); $smtp->dataend(); $smtp->quit; }
アプリパスワードでなく、通常?のgoogleのログインパスワードを使用すると次のようなエラーとなります。
$ ./test_send_mail_by_gmail_smtp.pl Net::SMTPS>>> Net::SMTPS(0.03) Net::SMTPS>>> IO::Socket::INET(1.33) Net::SMTPS>>> IO::Socket(1.36) Net::SMTPS>>> IO::Handle(1.34) Net::SMTPS>>> Exporter(5.68) Net::SMTPS>>> Net::SMTP(3.05) Net::SMTPS>>> Net::Cmd(3.05) Net::SMTPS>>> IO::Socket::IP(0.37) Net::SMTPS=GLOB(0x2b41ae0)<<< 220 smtp.gmail.com ESMTP i69sm1748185pfk.30 - gsmtp Net::SMTPS=GLOB(0x2b41ae0)>>> EHLO localhost.localdomain Net::SMTPS=GLOB(0x2b41ae0)<<< 250-smtp.gmail.com at your service, [61.21.205.219] Net::SMTPS=GLOB(0x2b41ae0)<<< 250-SIZE 35882577 Net::SMTPS=GLOB(0x2b41ae0)<<< 250-8BITMIME Net::SMTPS=GLOB(0x2b41ae0)<<< 250-STARTTLS Net::SMTPS=GLOB(0x2b41ae0)<<< 250-ENHANCEDSTATUSCODES Net::SMTPS=GLOB(0x2b41ae0)<<< 250-PIPELINING Net::SMTPS=GLOB(0x2b41ae0)<<< 250-CHUNKING Net::SMTPS=GLOB(0x2b41ae0)<<< 250 SMTPUTF8 Net::SMTPS=GLOB(0x2b41ae0)>>> STARTTLS Net::SMTPS=GLOB(0x2b41ae0)<<< 220 2.0.0 Ready to start TLS Net::SMTPS=GLOB(0x2b41ae0)>>> EHLO localhost.localdomain Net::SMTPS=GLOB(0x2b41ae0)<<< 250-smtp.gmail.com at your service, [61.21.205.219] Net::SMTPS=GLOB(0x2b41ae0)<<< 250-SIZE 35882577 Net::SMTPS=GLOB(0x2b41ae0)<<< 250-8BITMIME Net::SMTPS=GLOB(0x2b41ae0)<<< 250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH Net::SMTPS=GLOB(0x2b41ae0)<<< 250-ENHANCEDSTATUSCODES Net::SMTPS=GLOB(0x2b41ae0)<<< 250-PIPELINING Net::SMTPS=GLOB(0x2b41ae0)<<< 250-CHUNKING Net::SMTPS=GLOB(0x2b41ae0)<<< 250 SMTPUTF8 Net::SMTPS=GLOB(0x2b41ae0)>>> AUTH LOGIN Net::SMTPS=GLOB(0x2b41ae0)<<< 334 VXNlcm5hbWU6 Net::SMTPS=GLOB(0x2b41ae0)>>> c21hcnQ4MTZwaWthQGdtYWlsLmNvbQ== Net::SMTPS=GLOB(0x2b41ae0)<<< 334 UGFzc3dvcmQ6 Net::SMTPS=GLOB(0x2b41ae0)>>> Net::SMTPS=GLOB(0x2b41ae0)<<< 535-5.7.8 Username and Password not accepted. Learn more at Net::SMTPS=GLOB(0x2b41ae0)<<< 535 5.7.8 https://support.google.com/mail/answer/14257 i69sm1748185pfk.30 - gsmtp