2019年6月27日 星期四

Perl send mail via gmail (use Net::SMTPS)

狀況:
更新 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;


沒有留言:

張貼留言