perlでSMTPサーバを指定してメール送信(TLS/SSL接続も可)

| コメント(0) | トラックバック(0)
とりあえずサンプルスクリプト↓

-----------------------------------------------------------------------

use strict;
use CGI::Carp qw(fatalsToBrowser);
use Net::SMTP;
use Net::SMTP::SSL;
use Net::SMTP::TLS;
use Encode qw(from_to encode);

#メールアドレス設定
my $from = 'hoge@gmail.com';
my $mailto= 'huga@nantoka.com';

#件名設定
my $subject = 'SMTPを指定してメール送信!';
from_to($subject, 'shiftjis', 'iso-2022-jp');
encode('MIME-Header-ISO_2022_JP', $subject);

#メールヘッダー設定
my $header = << "MAILHEADER";
From: $from
To: $mailto
Subject: $subject
Mime-Version: 1.0
Content-Type: text/plain; charset = 'ISO-2022-JP"
Content-Trensfer-Encoding: 7bit

MAILHEADER

#メール本文設定
my $message = << 'MAILBODY';
本日は晴天なり。

あああいいいううう
さよーなら!
MAILBODY

#文字コードをJISに変換
from_to($message, 'shiftjis', 'iso-2022-jp');

#SMTP設定(適宜変更してください)
my $server = 'smtp.gmail.com'; #ホスト名
my $auth = 1; #SMTPAuthを使用する場合は1
my $tls = 0; #TLS接続を使う場合は1
my $ssl = 1; #SSL接続を使う場合は1
my $port = 465; #ポート指定。指定しないと25番が勝手に設定される
my $user = 'hoge@gmail.com'; #SMTPAuthのユーザ名
my $pass = 'passwaord'; #SMTPAuthのパスワード

#メール送信オブジェクト設定
my $smtp = '';

#TLSのときは、オブジェクト生成時にAuthデータを渡す
if($tls){
 $smtp = Net::SMTP::TLS->new(
  $server,
  Port => $port ,
  User => $user ,
  Password => $pass
 ) || die "Connect failed over tls";
}
elsif($ssl){
 $smtp = Net::SMTP::SSL->new(
  $server,
  Port => $port
 ) || die "Connect failed over ssl";
}
else{
 $smtp = Net::SMTP->new($server, Port => $port) || die "Connect failed";
}
if(!$tls && $auth){
 $smtp->auth($user, $pass) || die "auth failed";
}

#メール送信
$smtp->mail($from);
$smtp->to($mailto);
$smtp->data();
$smtp->datasend($header);
$smtp->datasend($message);
$smtp->dataend();
$smtp->quit;

print <<EOM;
Content-type: text/html

送信しました~!
EOM

exit;
1;

---------------------------------------------------------------------------------

※Net::SMTP::SSLおよびNet::SMTP::TLSを使うには、IO::Socket::SSLモジュールが必要。
※IO::Socket::SSLをインストールするには、Net::SSLeayモジュールが必要
※試したところ、gmailの場合は、TLS使用&ポート587でも送信できた。
※例ではエンコードにEncodeモジュールを使っているが、Jcodeとか使いたい人はお好きなように。

トラックバック(0)

トラックバックURL: http://www.igreks.jp/blog/mt-tb.cgi/379

コメントする