perlでsmtpサーバーに接続して送信

| コメント(0) | トラックバック(1)

何年かぶりに、Perlからメール送信のプログラムを作ってる。

今まではsendmailコマンドをたたいてたけど、昨今の状況だと、適当なサーバーからのsendmailは迷惑メールとして扱われる。

ということで、「差し出し元Emailの正規のsmtpサーバー」に接続してメール送信を行うことにします。smtp authやらサブミッションポートやらがあるので、
Net::SMTP
を使用。

Authen::SASL
も忘れずにインストール。これが無くてもエラーは出ないが、動作しない。(オイ!)
これで、はまる人多い。(auth - World Wide Walker)

送信ポートの指定も、はまる所のようだ。(G-chan Square - [perl] Net::SMTPでメールを送ろう
本家のドキュメントには書いてないが、実際はポートの指定が出来るようだ。
普通はSMTPサーバーのポートは25番なのですが、CGIの設置はホスティングサーバーを使用して送信する事になると思うので、たいていは25番は不可(OP25B)。
サブミッションポートの587番を指定する。で、サブミッションポートを使うときは、SMTP認証が必須って所も多い。(詳しくは、Emailの提供元へ)

 

#!/usr/bin/perl

use Net::SMTP;

my $mailhost = 'smtp.exmple.jp'; # SMTP用のサーバー名
my $mailport = 587; # SMTP用のポート番号。25番のことも多い。
my $mail_username = 'exmple-user'; # メールアカウント
my $mail_password = 'exmple-pass'; # メールのパスワード

my $from_mail = 'from@exmple.jp'; # 送信元のメールアドレス
my $to_mail = 'sendto@exmple.jp'; # 宛先のメールアドレス

my $subject = 'test soushin';
my $message = 'body test mail';

my $header;
$header = "From: $from_mail\n";
$header .= "To: $to_mail\n";
$header .= "Subject: $subject\n";
$header .= "MIME-Version: 1.0"."\n";
$header .= "Content-type: text/plain; charset=ISO-2022-JP"."\n";
$header .= "Content-Transfer-Encoding: 7bit"."\n";

my $smtp = Net::SMTP->new($mailhost, Port => $mailport);
$smtp->auth($mail_username, $mail_password);
$smtp->mail($from_mail);
$smtp->to($to_mail);
$smtp->data();
$smtp->datasend($header);
$smtp->datasend("\n");
$smtp->datasend($message);
$smtp->quit;
他の関連のブログは下記からどうぞ。
にほんブログ村 地域生活(街) 東北ブログ 盛岡情報へ にほんブログ村 経営ブログ 経営者へ にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ UNIXへ

トラックバック(1)

トラックバックURL: http://mkplan.com/mt5/mt-tb.cgi/112

Noel Cafeで使用しているサーバーLolipopがパワーアップした。 いろいろ喜ばしいことではあるが、 自作CGIの改良が必要になってしまった。 ... 続きを読む

コメントする