メールの送信をPythonを使って自動化したいな…。
この記事では、上記のような悩みを解決していきます。
この記事の想定読者
- Pythonを使ってメールを送信したい人
- 有給申請など、テンプレ化できるものは自動で送れるようにしたい人
想定している読者は、上記のとおりです。
この記事では、「Pythonを使ってメールを送信する方法」について書いていきます。
今回はGmailを使って紹介していきますが、少し内容を変えるだけでYahoo!やoutlookなんかも使えるようになります。
なので手順としては、この記事を読んでいただければ問題ありません。
スクリプトの全貌
from email import message import smtplib # gmailで送信する場合の、SMTPのhostとport smtp_host = 'smtp.gmail.com' smtp_port = 587 # 自分のメールアドレス, ユーザー名, パスワード from_email = 'xxxx@gmail.com' username = 'xxxx@gmail.com' password = 'xxxx' # 宛先(gmail以外でもOKです) to_email = 'xxx@gmail.com' # インスタンスの生成 msg = message.EmailMessage() # 件名 msg['Subject'] = "test subject" # 送信元のメールアドレス msg['From'] = from_email # 送信先のメールアドレス msg['To'] = to_email # メールの本文 msg.set_content("test content") # 下記通信用 server = smtplib.SMTP(smtp_host, smtp_port) server.ehlo() server.starttls() server.ehlo() server.login(username, password) server.send_message(msg) server.quit()
これでOKですね。メールアドレスとか、テキストの中身を編集してあげればOKです。
Contents
【簡単】Pythonを使ってemail(メール)を送る方法【smtplib/gmail】
Pythonを使ってメールを送信する方法を書いていくのですが、その前に準備しておくべきことがあります。
準備 : 安全性の低いアプリを許可する
まずは、Pythonのスクリプトを実行する前に、自分のgmailアカウントで設定することがありまして、「安全性の低いアプリを許可する」にしましょう。
デフォルトだと、gmailのセキュリティ保護のために「オン」になっているはず。
これをオフにしないと、スクリプトを実行できません。
参考ページ >> 安全性の低いアプリと Google アカウント
Pythonからgmailでメールを送る
安全性の低いアプリを許可したら、あとはコードを書いていくだけです。
まずは、必要な標準ライブラリをインポートしましょう。
from email import message import smtplib
この2つがあれば、とりあえず簡単なメール送信ができます。
※添付ファイルを載せたり、日本語を取り扱う場合には、もう少し工夫が必要になります。
次に、gmailへのアクセスや、送信先のメールアドレスを書いていきます。
smtp_host = 'smtp.gmail.com' smtp_port = 587 from_email = 'xxxx@gmail.com' username = 'xxxx@gmail.com' password = 'xxxx' to_email = 'xxx@gmail.com'
smtp_host
とsmtp_port
は、gmailから送信する場合、このままでOKです。
from_email
: 送信元(From)のメールアドレスusername
: 送信元のメールアドレスと同じpassword
: gmailアカウントのパスワードto_email
: 送信先(To)のメールアドレス
あとは、上記のとおりです。
ここまで書けたら、メールの内容を作成していきましょう。
msg = message.EmailMessage() msg['Subject'] = "test subject" msg['From'] = from_email msg['To'] = to_email msg.set_content("test content")
message.EmailMessage
でインスタンスを生成したあと、それぞれ必要事項を埋めていきます。
set_content()
は、本文の中身になります。
最後に、SMTPを使って通信することで、メールを送信します。
server = smtplib.SMTP(smtp_host, smtp_port) server.ehlo() server.starttls() server.ehlo() server.login(username, password) server.send_message(msg) server.quit()
ehlo()
は、Extended HELLOの略で、要するに「メールサーバーに挨拶する(接続を試みる)」です。
ここら辺の7行は、そのまま流用してあげれば良いかなと思います。
すべて足し合わせると、冒頭でも紹介したようなスクリプトが完成します。
from email import message import smtplib # gmailで送信する場合の、hostとport smtp_host = 'smtp.gmail.com' smtp_port = 587 # 自分のメールアドレス, ユーザー名, パスワード from_email = 'xxxx@gmail.com' username = 'xxxx@gmail.com' password = 'xxxx' # 宛先 to_email = 'xxx@gmail.com' # インスタンスの生成 msg = message.EmailMessage() # 件名 msg['Subject'] = "test subject" # 送信元のメールアドレス msg['From'] = from_email # 送信先のメールアドレス msg['To'] = to_email # メールの本文 msg.set_content("test content") # 下記通信用 server = smtplib.SMTP(smtp_host, smtp_port) server.ehlo() server.starttls() server.ehlo() server.login(username, password) server.send_message(msg) server.quit()
gmail以外でも、HOSTとPORTさえ分かれば、使い分けできますので、お試しあれ。
各社SMTPまとめ
- yahoo! :
smtp.mail.yahoo.co.jp
,465
- outlook :
smtp.office365.com
,587
gmail以外で、割と主要なところを上げました。その他は、〇〇 smtp
で調べてみてください。
おしまいです(`・ω・´)!
おすすめの記事