PCの前に居ない時にプログラムを実行してその結果がどうだったか知りたいですよね?
その方法としてSkypeやLINEなどのツールから通知させる方法もありますが今回は一番シンプルなメールを送信するコードを紹介します。
定期的にメールを送る作業があるのならばそれを自動化することだって可能です。
■Pythonでメール送信する前に
①アカウントの作成
メール送信用のメールアカウントが必要となります。
今回はGmailを使うのでお持ちでない方はこちらからアカウント作成してください。
今使っているアカウントをお持ちでも、万が一何かあったら困る・・・という方はプログラム用にアカウントを作成しておきましょう。
もちろん他のメールサービスでも可能ですが設定が変わってくるの注意が必要です。
②googleアカウントの設定
自作プログラムでGmailを利用するには『安全性の低いアプリ』とみなされるので「安全性の低いアプリのアクセス」を許可する必要があります。
「安全性の低いアプリのアクセス」の設定を変えたことが無い方は
こちらから設定を変更します。
デフォルトでは
安全性が低いアプリの許可:無効
になっているのでクリックして有効にします。
■Pythonメール送信コード
設定が終わったら早速メール送信を試してみます。
以下コードをさっくとコピーして下さい。
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 29 30 31 32 33 34 35 36 37 38 39 40 41 |
#email送信モジュール import smtplib from email.mime.text import MIMEText #メール設定の情報 smtp_host = 'smtp.gmail.com'# そのまま smtp_port = 587# そのまま #----------------ここ以下の情報を編集する---------------- to_email = '▲▲▲▲▲@gmail.com' # 送りたいアドレス gmail_account = '▲▲▲▲▲@gmail.com' # Gmailのアドレス gmail_password = '▲▲▲▲▲' # Gmailのパスワード #----------------編集スペースここまで---------------- def main(): # メールの本文 message = 'メールの本文内容' # メールの内容を作成 msg = MIMEText(message, "html") # 件名 msg['Subject'] = '件名内容' # メール送信元 msg['From'] = gmail_account #メール送信先 msg['To'] = to_email # メールサーバーへアクセス server = smtplib.SMTP(smtp_host, smtp_port) server.ehlo() server.starttls() server.ehlo() server.login(gmail_account, gmail_password) server.send_message(msg) server.quit() if __name__=='__main__': main() |
コードの一部メールアカウント情報の部分だけ編集します。
1 2 3 4 5 6 7 8 |
#----------------ここ以下の情報を編集する---------------- to_email = '▲▲▲▲▲@gmail.com' # 送りたいアドレス gmail_account = '▲▲▲▲▲@gmail.com' # Gmailのアドレス gmail_password = '▲▲▲▲▲' # Gmailのパスワード #----------------編集スペースここまで---------------- |
を自分のアカウント情報に書き換えます。
1 2 3 4 |
# メールの本文 msg.set_content('メールの本文内容') # 件名 msg['Subject'] = '件名内容' |
件名と本文を変更したい時はここを編集します。
これを適当な名前で保存して実行すると編集した送信元アカウントから送信先アドレスにメールが送信されます。プログラムを実行した時に、設定した内容に間違いないのにエラーが出るという場合は、
Googleのセキュリティ設定、ウィルス対策ソフト、社内ネットワーク環境によって送信できないように設定されている可能性があります。管理者に問い合わせてみましょう。
■添付ファイルを付けてみる
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
#email送信モジュール from email.mime.text import MIMEText from email.mime.application import MIMEApplication from email.mime.multipart import MIMEMultipart import smtplib from os.path import basename #メール設定の情報 smtp_host = 'smtp.gmail.com'# そのまま smtp_port = 587# そのまま #----------------ここ以下の情報を編集する---------------- to_email = '▲▲▲▲▲@gmail.com' # 送りたいアドレス gmail_account = '▲▲▲▲▲@gmail.com' # Gmailのアドレス gmail_password = '▲▲▲▲▲' # Gmailのパスワード #----------------編集スペースここまで---------------- def main(): # メールの本文 message = 'メールの本文内容' # メールの内容を作成 msg = MIMEMultipart() # 件名 msg['Subject'] = '件名内容' # メール送信元 msg['From'] = gmail_account #メール送信先 msg['To'] = to_email # ファイルを添付 msg.attach(MIMEText(message)) # ファイルを添付 path = "./test.txt" with open(path, "rb") as f: part = MIMEApplication( f.read(), Name=basename(path) ) part['Content-Disposition'] = 'attachment; filename="%s"' % basename(path) msg.attach(part) # メールサーバーへアクセス server = smtplib.SMTP(smtp_host, smtp_port) server.ehlo() server.starttls() server.ehlo() server.login(gmail_account, gmail_password) server.send_message(msg) server.quit() if __name__=='__main__': main() |
添付ファイルを付けたい場合はこちらです。
下記からコードをコピーして、先ほど同様編集します。
1 2 3 4 5 6 7 8 |
#----------------ここ以下の情報を編集する---------------- to_email = '▲▲▲▲▲@gmail.com' # 送りたいアドレス gmail_account = '▲▲▲▲▲@gmail.com' # Gmailのアドレス gmail_password = '▲▲▲▲▲' # Gmailのパスワード #----------------編集スペースここまで---------------- |
ここでは同じフォルダにある
「test.txt」をメールに添付してメール送信します。
関数化して他のプログラムにも組み込めばかなり便利になりますよ!
簡単なのでぜひ、メール送信にチャレンジしてみましょう。
最高の6ヶ月!超実践型プログラミングスクール【.pro】