Raspberry Pi PerlでGmail送信(SMTP+TLS)

GmailのSMTPサーバはSSLとTLSに対応しています。TLSはSSLを元に強化されているので、TLSを使おうと思います。ググってみると、Net::SMTP::TLS というモジュールを使うみたいです。念の為、apt-cache で検索してみると…

$ apt-cache search smtp tls perl
libemail-sender-transport-smtp-tls-perl - Perl module for sending email using TLS
libnet-smtp-tls-butmaintained-perl - Perl module for providing SMTP client supporting TLS and AUTH
libnet-smtp-tls-perl - Perl SMTP client library supporting TLS and AUTH

3件ヒットしました。最後の libnet-smtp-tls-perl がそれっぽい感じがします。早速インストール。で、このサイトを参考にプログラムを作成して実行してみました。

すると、こんなメッセージが表示されて、メール送信までたどり着きませんでした。

$ ./mail_send_tls.pl
invalid SSL_version specified at /usr/local/share/perl/5.14.2/IO/Socket/SSL.pm line 332

困りました…。何でTLSを使っているのにSSLのバージョンが関係あるんだと。訳分からなかったので、この1行全部使ってググってみると、何と解決策が書いてあるページに行き着きました!! それも Raspberry Pi のページです。

内容からすると、Debianのバグで、打ち間違いがあるらしいとの事。以下のコマンドで内容を編集しました。因みに "/m{^(!?" で検索して場所を見つけています(1490行目でした)。

sudo chmod 755 /usr/local/share/perl/5.14.2/IO/Socket/SSL.pm
sudo vi /usr/local/share/perl/5.14.2/IO/Socket/SSL.pm

m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))$}i 
 ↓
m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))}i

この修正をする事で、無事にmail送信できました。

以下は送信用に作ったプログラムです。

$ cat ./mail_send_tls.pl
#!/usr/bin/perl

use Net::SMTP::TLS;

my $smtp = new Net::SMTP::TLS(
'smtp.gmail.com',
Port => 587,
User => 'yyyyyyyy@gmail.com',
Password => 'xxxxxxxx',
);

$smtp->mail('yyyyyyyy@gmail.com');

$smtp->recipient('jjjjjjjj@yahoo.co.jp');

$smtp->data();

$smtp->datasend("To: jjjjjjjj\@yahoo.co.jp\n");
$smtp->datasend("From: \"tarou\" <yyyyyyyy\@gmail.com>\n");
$smtp->datasend("Content-Type: text/plain\n");
$smtp->datasend("Subject: A Test Mail");

$smtp->datasend("\n");
$smtp->datasend("This is a test mail body");
$smtp->datasend("\n");
$smtp->dataend();

$smtp->quit;

exit;

スポンサーサイト

コメントの投稿

非公開コメント

黒ねこ時計 くろック D02
プロフィール

jujurou

Author:jujurou
運営HP:チャコの部屋
Twitter:jujurou

カレンダー
01 | 2017/02 | 03
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 - - - -
最新記事
最新コメント
カテゴリ
ユーザタグ

RaspberryPi ぺるけ Linux TRminiWatterPart4 トランジスタ式ミニワッター MPD イーサネットコンバータ OpenOCD DAC FON2405E buildroot FM3ペリフェラル BeagleBoneBlack library FM3評価ボード ODROID-U2 mingw OpenGL TL-WR700N Edison bitbake KiCad VMware シングル FM4 ミニワッター 6N6P 計測 

月別アーカイブ
ランキング

FC2 Blog Ranking

カウンター
検索フォーム
リンク
RSSリンクの表示
QRコード
QRコード
ライセンス
クリエイティブ・コモンズ・ライセンス
Twitter