はじめに
仕事とは別件で、さくらインターネット共用サーバーでメーリスの自動登録システムを組んだのですが、 その時、メールの送信でつまずいたので記録しておく。
pythonで書いてありますが、他の言語でも参考にはなるはず。
まず、基本的には、下記のサイトの
Pythonでメールを送信したい人のためのサンプル集
に書いてある方法を組み合わせれば大丈夫なのですが、いくつか注意点があります。
まず、さくらのSMTPサーバーは、一般的な25番ポートではなく587番ポートを使用します。
25番ポートからでも送信できるようですが、25番ポートは迷惑メールなどでよく使われるらしいので、587にしておくのが無難だと思われます。
そして、TLSという方式で認証を行なってから送信します。
まあ、要するに、上記のリンク中の「gmailを使って送信してみる」の方法で行えば問題無いのですが、
送信用のアカウント(メールアドレス)をどのように準備するかを紹介します、
送信用アドレスの作成
まずは、コントロールパネルにログインし、管理画面の「メールアドレスの管理」を選択します。
そして、メールアドレス名とパスワードを設定し、登録します。このとき設定したパスワードはのちのち使用するので、忘れないようにしてください。これだけで準備は完了です。コードを書く
さて、いよいよ送信用のプログラムです。先程も述べたように、基本的には上記サイトの方法で問題ないですが、 設定が少し厄介です。まず、SMTPサーバーとの接続は、さくらインターネットのアカウント(なんとか.sakura.ne.jp)で行います。 そして認証は、先ほど作成したメールアドレス名と先ほど設定したパスワードを使用します。 あとは、上記のサイトに従って設定すれば、送信できます・・・と言いたいとこですが、じつは上記のサイトの「日本語を含んだメール」の設定には 不備があります。msg = MIMEText(body, 'plain', encoding)をmsg = MIMEText(body.encode(encoding), 'plain', encoding)に書き換えてやる必要があるみたいです。そうしないと、Unicode.DecodeErrorだったかなんかが発生します。また、この手のPythonで日本語を扱うシステムは、基本的に文字はすべてUnicode文字を使用するようにしたほうがよさげです。
参考
Pythonでメールを送信したい人のためのサンプル集
Pythonで日本語メールを送る。
0 件のコメント:
コメントを投稿