0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pythonでメールを送信してみました。

Posted at

#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
を参考に作成しました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?