エックスサーバーでPythonを使ってメールを送信する

smtplibモジュールとemail.mimeモジュールを使って、メールを送信します。

Pythonでメール送信機能を作成することによって、プログラムやアプリなど処理の過程で、メールを自動送信できるようになります。

事前準備

まずは、エックスサーバーで送信するメールアカウントを【メールアカウント追加】から作成します。

次に、【メールソフト設定】で、【送信メール(SMTP)サーバー】の項目を確認します。

今回は、以下のように設定しています。

それぞれ、自身の環境に合わせて変更してください。

SMTPの設定

送信メール(SMTP)サーバーxxxxx.xserver.jp
ポート465
アカウントsample@dattesar.com
パスワードdattesar_pass

メールの内容

宛先(To)test@dattesar.com
送信元(From)sample@dattesar.com
件名(Subject)テストメール
本文(Text)このメールはPythonで送信しています。

ソースコード

プログラムの書き方は色々ありますが、私は自分が分かりやすいように、SMTPの設定とメールの内容を分けて、辞書型で記述しています。

import smtplib
from email.mime.text import MIMEText

smtp_setting = {
    'host': 'xxxxx.xserver.jp',
    'port': 465,
    'account': 'sample@dattesar.com',
    'password': 'dattesar_pass'
}

email_content = {
    'To': 'test@dattesar.com',
    'From': 'sample@dattesar.com',
    'Subject': 'テストメール',
    'Text': 'このメールはPythonで送信しています。'
}

msg = MIMEText(email_content['Text'], 'plain', 'utf-8')
msg['Subject'] = email_content['Subject']
msg['From'] = email_content['From']
msg['To'] = email_content['To']

with smtplib.SMTP_SSL(smtp_setting['host'], smtp_setting['port'], timeout=10) as smtp:
    smtp.login(smtp_setting['account'], smtp_setting['password'])
    smtp.send_message(msg)
    smtp.quit()