見出し画像

[Python]今日の運勢をHTML形式でGmailから送る

1.HTML形式でメール送信

前回、Gmail経由で今日の運勢をテキストデータで送信していました。今回はそれに対して、HTML形式に変換して送信します。これによって送信したい文書の内容が構造化できます。

2.コード

from smtplib import SMTP
from smtplib import SMTPAuthenticationError
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import formatdate
from datetime import datetime
from random import randint
from getpass import getpass

#設定情報
HOST = "smtp.gmail.com"
PORT = 587
#入力情報
user_address = input("gmailのアドレス:")
password = getpass("gmailのパスワード:")
to_email = input("送り先のメールアドレス:")

#メッセージ内容作成
today = datetime.now().strftime("%Y/%m/%d")
mikuji = ["大吉", "中吉", "小吉", "末吉", "n吉"]
items = ["傘", "コーヒー", "聖書", "オライリーの分厚い本", "権力"]
mikuji_result = mikuji[randint(0, len(mikuji) - 1)]
item_result = items[randint(0, len(items) - 1)]

message = MIMEMultipart("alternative")
message["Subject"] = f"{today}の運勢"
message["From"] = user_address
message["To"] = to_email
message["Date"] = formatdate()

html_format = """<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width">
    <title>{0}の運勢</title>
</head>
<body>
    <header align="center">
        <h1>{0}の運勢</h1>
    </header>
    <div class="container" align="center">
        <div class="result">
            <h2>{1}</h2>
        </div>
        <div class="item">
            <h2>ラッキーアイテムは{2}</h2>
        </div>
    </div>
</body>
</html>
""".format(today, mikuji_result, item_result)

html_result = MIMEText(html_format, "html")
message.attach(html_result)

from_email = user_address
to_list = [to_email]
gmail_smtp = SMTP(HOST, PORT)
gmail_smtp.starttls()

try:
    gmail_smtp.login(user_address, password)
    gmail_smtp.sendmail(from_email, to_list, message.as_string())
    print("--送信完了--")
except SMTPAuthenticationError:
    print("ログインに失敗しました。")
finally:
    gmail_smtp.quit()

3.実行結果

画像1

(CSSでいい感じにしたかった...)

この記事が気に入ったらサポートをしてみませんか?