#pythonでメールの送信してみました。
この記事は、SLP KBIT Advent Calendar 2020 の14日目の記事です。
今回はPythonでメールの送信をしてみました。ソースコードのサンプルは Webにあります。(https://docs.python.org/ja/3/library/smtplib.html)
##目次
・開発環境
・メールの自動送信の仕組み
・送信のプログラムを作ってみる。
・終わりに
###開発環境
・python3.9.0
・VS code
###eメールの自動送信のしくみ
eメールはスマホやパソコンから自身のメールサーバーに送られます。次に自身のメールサーバーから受信先のメールサーバーに送られます。そして相手のデバイスにメールが受信されます。
今回はしませんが、メールの自動送信をするには自身のメールサーバーから自身もサーバーに送信するプログラムを作ります。
今回はpythonでgmailを送信します。
####SMTPサーバのアドレスを入力する。
まず、https://docs.python.org/ja/3/library/smtplib.html のサンプルコードをエディタにペーストします。
import smtplib
def prompt(prompt):
return input(prompt).strip()
fromaddr = prompt("From: ")
toaddrs = prompt("To: ").split()
print("Enter message, end with ^D (Unix) or ^Z (Windows):")
# Add the From: and To: headers at the start!
msg = ("From: %s\r\nTo: %s\r\n\r\n"
% (fromaddr, ", ".join(toaddrs)))
while True:
try:
line = input()
except EOFError:
break
if not line:
break
msg = msg + line
print("Message length is", len(msg))
server = smtplib.SMTP('localhost')
server.set_debuglevel(1)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
24行目の'localhost'はサーバーアドレスです。これを'smtp.gmail.com'に変更します。またポートを指定する必要があるので先ほど入力したアドレスの後に「587」と入力します。(今回はTLSを使用しているので587と入力しましたが、SSLを使用する場合は465と入力します。)
server = smtplib.SMTP('smtp.gmail.com', 587)
####自分と相手のメールアドレスを入力します。
6行目の「From」に自分のメールアドレスを入力します。また7行目の「To」に相手のメールアドレスを入力します。相手が一人の場合、7・12・26行目の「toaddrs」のsを消します。また12行目を以下の画像のように変更します。
import smtplib
def prompt(prompt):
return input(prompt).strip()
fromaddr = 'ここに自分のメールアドレスを入力します。'
toaddr = 'ここに相手のメールアドレスを入力します。'
print("Enter message, end with ^D (Unix) or ^Z (Windows):")
# Add the From: and To: headers at the start!
msg = ("From: %s\r\nTo: %s\r\n\r\n"
% (fromaddr, toaddr))
while True:
try:
line = input()
except EOFError:
break
if not line:
break
msg = msg + line
print("Message length is", len(msg))
server = smtplib.SMTP('smtp.gmail.com', 587)
server.set_debuglevel(1)
server.sendmail(fromaddr, toaddr, msg)
server.quit()
####ログインパスワードを設定する。
アプリやプログラム経由でメールを送る場合はアプリパスワードが必要があります。アプリパスワードを設定するには2段階認証が必要なので最初に2段階認証を設定します。
以下の手順で2段階プロセスを有効にします。
1googleアカウントを開く
2ナビゲーションパネル(左に表示されている。)でセキュリティを選択
3[googleへのログイン]で[2段階認証プロセス]の[使ってみる]を選択
4画面の指示に従い手順に従い手順を完了をする。
次にアプリパスワードを設定します。
1googleアカウントを開く
2ナビゲーションパネルでセキュリティを選択
3アプリパスワードをクリック
4画面の手順に従い手順に従って手順を完了する。
次に26行目以降を下のコードに変換します。
server.ehlo()
server.starttls()
server.login('自分のGmailのアドレスを入力', 'パスワードを入力')
server.set_debuglevel(1)
server.sendmail(fromaddr, toaddr, msg)
server.quit()
####メールの送信
プログラムを実行し、本文を入力することによってメールを送信します
###終わりに
今回はメールを送信するプログラムを作ってみました。
次はメールの自動化をやってみようと思います。
この記事はhttps://www.youtube.com/watch?v=zdPDrtTrqqQ
を参考に作成しました。