更新 perl module 後無法用 Net::SMTP::TLS 透過 gmail 寄信。
錯誤訊息:
invalid SSL_version specified at C:/Perl/site/lib/IO/Socket/SSL.pm line 575
原因:
Net::SMTP::TLS 有 bug,和新的 IO::Socket::SSL 不合。
解法:
改用 use Net::SMTPS。使用方法和 Net::SMTP::TLS 幾乎一樣。
只需修改紅色的那三行。
use Net::SMTPS;
$gmail_from = 'myaccount@gmail.com';
$mail_subject = "Subject Here";
$smtp = new Net::SMTPS (
'smtp.gmail.com',
Port => 465,
doSSL => 'ssl',
Timeout => 10
);
$smtp->auth ( 'myaccount@gmail.com', 'mypassword' );
# -- Enter email FROM below. --
$smtp->mail('chdu.tw@gmail.com');
$smtp->to('email1', 'email2');
$smtp->data();
#This part creates the SMTP headers you see
$smtp->datasend("From: $gmail_from \n");
$smtp->datasend("Content-Type: text/html \n");
$smtp->datasend("Subject: $mail_subject");
# line break to separate headers from message body
$smtp->datasend("\n");
$smtp->datasend("Test");
$smtp->datasend("\n");
$smtp->dataend();
$smtp->quit;