smtplibを使ったメール送信 gmailの場合、SMTPサーバはsmtp.gmail.com:587
で設定する。
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 import osimport smtplibimport email.utilsfrom email.mime.text import MIMETextmail_from = os.environ['MAIL_FROM' ] rcpt_to = os.environ['RCPT_TO' ] smtp_server = 'smtp.gmail.com' smtp_port = 587 smtp_user = os.environ['SMTP_USER' ] smtp_password = os.environ['SMTP_PASSWORD' ] msg = MIMEText('テストメッセージ\n' + '送信テスト\n' ) msg['To' ] = email.utils.formataddr(('テスト宛先' , mail_from)) msg['From' ] = email.utils.formataddr(('テスト送信元' , rcpt_to)) msg['Subject' ] = 'テストメール' server = smtplib.SMTP(smtp_server, smtp_port) server.set_debuglevel(True ) try : server.ehlo() server.starttls() server.login(smtp_user, smtp_password) server.sendmail(mail_from, rcpt_to, msg.as_string()) finally : server.quit()
Gmailの設定 デフォルトではSMTPサーバとして使用できない SMTPでメール送信を行う設定をせずに送信するとエラーになる。
1 smtplib.SMTPAuthenticationError: (535 , b'5.7.8 Username and Password not accepted. Learn more at\n5.7.8 https://support.google.com/mail/?p=BadCredentials xxxxxxxxxxxxxxxx.xx - gsmtp' )
方法1: 安全性の低いアプリのアクセス 標準で無効になっている、安全性の低いアプリのアクセスを有効にして送信可能にする。 パスワードはGmailアカウントのパスワードを使用する。
方法2: 2段階認証用のアプリパスワード 2段階認証を有効にして、アプリパスワードを発行する。 パスワードはアプリ用パスワードとして発行した16桁のパスワードを使用する。
SMSか音声通話で2段階認証プロセスを有効化する(ここでは音声通話)。
認証アプリケーションを設定する。
アプリ用パスワードを発行する。