お問い合わせフォーム的な感じのフォームから、cgiで通知メールを送る方法。
・経緯
cgiといえばPerlを使うのが多数派なのであろうが、Perlが書けない雑魚なので今までcgiをRubyで書いてきた。
それで、Rubyでメールを送るにはRailsでも使われているというmail gemが必要なのだが、レンタルサーバーなのでRailsは使えないし、ローカル環境のように簡単にgem install mail
でインストールすらもできず、Rubyを使うには厳しいことが発覚した。
結局、面倒なことが嫌いなので、標準ライブラリでメールを送れるPythonを使ってしまえということになった。
・実装
まずライブラリをインポートする。
import smtplib
from email.mime.text import MIMEText
続いて、メッセージ(メールの本体)を作成する。
def createmsg(addr_from,addr_to,subject,content):
msg = MIMEText(content) #本文
msg["From"] = addr_from #送り主
msg["To"] = addr_to #送り先
msg["Subject"] = subject #件名
return msg
addr_from = "from@example.com"
addr_to = "to@example.com"
sbj = "Subject Example"
content = "Content Example"
message = createmsg(addr_from, addr_to, sbj, content)
あとは、送信サーバー(SMTP)に接続して送信する。SSL接続を使うと安全。もちろんUSER_NAMEおよびPASSWORDは各自のサーバーのものを使う。
sender = smtplib.SMTP_SSL("smtp.example.com") #サーバーに接続
sender.login(USER_NAME, PASSWORD) #サーバーにログイン
sender.send_message(message) #メッセージを送信
これだけで完了である。
楽なのでやっぱりcgiはPythonで書こうかなとか思っている。
【CGI】CGIでメールを送る