Google のメールサーバーを使って Python からメール送信する場合、スクリプト内部にて Google アカウントでメールサーバーにログインする必要があります。
しかし、ログインに使用する Google アカウントに 2段階認証プロセスが使われている場合は Google サービスへのログインパスワードではなく、アプリパスワードを Google のサイトで生成し、このアプリパスワードでメールサーバーにログインする必要があります。
Google アカウントのアプリパスワードを生成
このあたりを参考にしてアプリパスワードを生成します。
https://support.google.com/mail/answer/185833?hl=ja
Python スクリプトからメール送信
以下の内容でメールを送信するサンプルコードです。
- Google アカウント (送信元メールアドレス): example@gmail.com
- アプリパスワード: xxxxxxxxxxxxxxxx
- 送信先メールアドレス: addr1@xxx.example.net, addr2@yyy.example.net, addr3@zzz.example.net
- 件名: テストメール
サンプルコード
#!/usr/bin/env python3
from smtplib import SMTP
from email.mime.text import MIMEText
from email.header import Header
GOOGLE_ACCOUNT = 'example@gmail.com'
APP_PASSWORD = 'xxxxxxxxxxxxxxxx'
def send_mail(to_addrs, subject, mail_body, sub_type='plain'):
smtp_server = 'smtp.gmail.com'
port = 587
from_addr = GOOGLE_ACCOUNT
encoding = 'utf-8'
msg = MIMEText(mail_body.encode(encoding), sub_type, encoding)
msg['Subject'] = Header(subject, encoding)
msg['From'] = from_addr
msg['To'] = ', '.join(to_addrs)
server = SMTP(smtp_server, port)
server.starttls()
server.login(GOOGLE_ACCOUNT, APP_PASSWORD)
server.sendmail(from_addr, to_addrs, msg.as_string())
server.quit()
body = '''
ほげほげ
ふがふが
ぴよぴよ
'''.strip()
send_mail(['addr1@xxx.example.net', 'addr2@yyy.example.net', 'addr3@zzz.example.net'], 'テストメール', body)
HTML メールを送信
HTML メールを送信する場合は send_mail() の引数 sub_type に ‘html’ を指定します。
html_body = '''
<table border=1>
<tr><th></th><th>あああ</th><th>いいい</th></tr>
<tr><td>ううう</td><td>えええ</td><td>おおお</td></tr>
<tr><td>かかか</td><td>ききき</td><td>くくく</td></tr>
<tr><td>けけけ</td><td>こここ</td><td>さささ</td></tr>
</table>
'''.strip()
send_mail(['addr1@xxx.example.net', 'addr2@yyy.example.net', 'addr3@zzz.example.net'], 'テスト HTML メール', html_body, 'html')
0 件のコメント:
コメントを投稿