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

何年かぶりに、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アドレスの提供元へ。ISPとかGoogleとか・・・。)

 

#!/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;

skypeメモ

■スカイプ名だけだと、利用者側の設定で通話になるか、チャットになるか分からない。
<a href="skype:mkplan">Click</a>
Click 

<a href="skype:mkplan?call">Click</a>
Click かならず、通話になる。

■ホームページ上から簡単にSMSを送信する方法
スカイプから入力する場合は、090から入力していいけど、
アンカーで指定する場合は、国番号の「+81」と090や080の最初の「0」を取らないとダメ。

<a href="skype:+819033680228?sms">Click</a>
携帯にSMSを送る
<a href="skype:+819033680228;+819033680228?sms">Click</a>
複数の携帯を指定することも出来るよ。



参考
http://www.skype.com/intl/ja/share/buttons/advanced.html

mixicomment

mixicommentを使おうと思っていましたが、なかなか動作しなくて。

エラーが発生しました。
close OpenIDを検証できませんでした: 入力されたアドレスはOpenIDではありません。

と、出るわけ。

http://www.movabletype.jp/plugins/mixicomment.html
を見て、ちゃんと設定してるんだけどなぁ。
というよりも、設定する箇所はそんなに無いけど。

上記からリンクされているhttp://plugins.movabletype.org/mixicomment/
を見たら、
Crypt::SSLeay is required.
とある。
英語のページだから見逃してました。

早速、sshでつないで、
perl -MCPAN -e shell
で、
install Crypt::SSLeay
をして、インストール。

難なく、mixicommentが動作しました。
他のOpenIDと違って、mixi専用のボタンが付くから、ログインが簡単なようです。

MTOSをダウンロード

MTOSをダウンロードしてインストールした。
公開されているファイルは、ZIPだから、どうやったら展開できるか分からなかったので、わざわざwindowsにダウンロードして、tar.gzに変換して、FTPをして・・・。
そんな面倒なことをした。

でも、
http://www.movabletype.org/downloads/betas/
にアクセスすると、ちゃーんと、tar.gzが置いてあるんだね。

さて、MTOSは無料で使えるとのこと。商用でもだ。
お礼に、ベータ版を使うことにしよっと。
万が一動作しないとか不具合があれば、それを報告することで、貢献できるかな。そんな感じ。

ウェブを転送したい場合

<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=shift_jis”>
<META HTTP-EQUIV=”refresh” CONTENT=”0;URL=http://mame.habit.net/~mkplan/whois/”>
<title>転送</title>
</head>
<body>
<a href=”http://mame.habit.net/~mkplan/whois/”>
こちらをクリック</a>

</body>
</html>

基本的に赤字の指定で転送されるが、METAタグが無視される何らかのブラウザでも転送が分かるように青字も用意しておくと、親切。
しかし、どんなブラウザのためなのか、知らない。

(2002/4/7追加)