お問い合わせフォーム的な感じのフォームから、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でメールを送る

投稿ナビゲーション


コメントを残す

メールアドレスが公開されることはありません。