TLS と認証が必要な SMTP サーバ経由でメールを送信する以前書いたスクリプトをちょっと整理した。標準入力からメッセージ本文を受けとって送信できるように機能を切り出し。
メールでコンテンツを投稿できるサービスにメールを投げる時用。
標準入力で受け取った本文を Email::MIME でメールの形式に変換して、Email::Sender::Simple を使って送信。transpot として Email::Sender::Transport::SMTP::TLS を使う。なお、今 Email::Sender::Transport::SMTP::TLS の Pod ドキュメントをみたら今後は Email::Sender::Transport::SMTPS の方がお薦めと書いてあったのでその方が良いのかも。
#!/usr/bin/perl use warnings; use strict; use utf8; use open IN => ':utf8'; use open ':std'; use Email::MIME; use Email::Sender::Simple qw(sendmail); use Email::Sender::Transport::SMTP::TLS; eval { my $message; { local $/ = undef; $message = <>; } my $subject = "sendXXX: $message"; $subject = substr($subject, 0, 32 - 3) . '...' if length($subject) > 32; my $new_mail = Email::MIME->create( header_str => [ From => 'me@example.com', To => 'post@example.com', Cc => 'me@example.com', Subject => $subject, ], attributes => { content_type => 'text/plain', charset => 'UTF-8', encoding => '8bit', }, body_str => $message ); sendmail( $new_mail, { from => 'me@example.com', transport => Email::Sender::Transport::SMTP::TLS->new( { host => 'smtp@example.com', port => 587, username => 'myusername', password => 'mypassword' } ) } ); }; if ($@) { open my $file, '>>', '/home/me/var/log/sendXXX/error.log' or die $!; print $file $@, "\n"; close $file; exit 1; } exit 0;
[ Perl モジュール ]
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。