概要
Pico WをWi-Fiに接続し、ランダムに「大吉・中吉・小吉・末吉・凶」を選んで、HTML形式のメールで送信します。
この仕組みを活用すれば、例えば自宅の環境変化に応じて運勢にひとひねりを加えたり、温度・湿度・人感センサーなどと組み合わせた通知に発展させることもできます。
コード
import network
import utime
import random
import umail
from secrets import secrets
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(secrets['ssid'], secrets['password'])
print("Wi-Fi接続中...")
while not wlan.isconnected():
utime.sleep(1)
print("✅ Wi-Fi接続完了:", wlan.ifconfig())
def get_fortune():
fortunes = [
("大吉", "今日は最高の一日!新しいことを始めよう!🌈"),
("中吉", "まずまずの運勢。人との出会いにツキがあります。🤝"),
("小吉", "小さな幸せが見つかる予感。🍀"),
("末吉", "少し注意が必要。焦らずに行動しましょう。🕊️"),
("凶", "今日はゆっくり休んでリセットを。😌")
]
return random.choice(fortunes)
def send_fortune_mail():
subject = secrets['email_subject'] # ← あなたのキー名に合わせた
fortune, comment = get_fortune()
html = f"""
<html>
<body style="font-family:sans-serif; background-color:#f4f4f4; padding:20px;">
<h2>🌅 今日の運勢:{fortune}</h2>
<p>{comment}</p>
<hr>
<p style="color:#888;">送信元:{secrets['sender_name']}</p>
</body>
</html>
"""
print("📨 メール送信中...")
smtp = umail.SMTP("smtp.gmail.com", 465, ssl=True)
smtp.login(secrets['sender_email'], secrets['sender_app_password'])
smtp.to(secrets['recipient_email'])
smtp.write(f"From: {secrets['sender_name']} <{secrets['sender_email']}>\r\n")
smtp.write(f"To: {secrets['recipient_email']}\r\n")
smtp.write(f"Subject: {subject}\r\n")
smtp.write("Content-Type: text/html; charset=utf-8\r\n")
smtp.write("\r\n")
smtp.write(html)
smtp.send()
smtp.quit()
print(f"✅ メール送信完了!今日の運勢は【{fortune}】です。")
def main():
connect_wifi()
send_fortune_mail()
if __name__ == "__main__":
main()
秘密情報を分離する(secrets.py)
Wi-FiのSSIDやパスワード、Gmailの送信設定などは別ファイルに保存。セキュリティ的にも安心です。
# secrets.py
secrets = {
'ssid': 'SSIDXXX',
'password': 'PASWORDXXX',
'sender_email': 'XXXXXXX@gmail.com',
'sender_name': 'RaspberryPiPico',
'sender_app_password': 'XXXX XXXX XXXX XXXX',
'recipient_email': 'YYYYYYY@gmail.com',
'email_subject': 'Email from RPi Pico',
}MicroPython 用の SMTP クライアントライブラリ「uMail(MicroMail)」 のコードです、このファイルをmain.pyと同じフォルダに配置してください。
uMail/umail.py at master · shawwwn/uMail
A lightweight, scalable SMTP client for sending email in MicroPython - shawwwn/uMail
実行方法
secrets.py,umail.py, main.py を用意(Wi-Fi SSID・パスワード・メール設定)- 上記コードをPico Wに転送

解説
secretsから設定を読み込む構成なので、Wi-Fi情報やメール情報がコードにハードコーディングされません。- メール送信前に
try…exceptで例外処理を入れているので、Wi-Fi切断やSMTP認証エラーなどが起きた時でもログが出力されて安心です。 - HTMLメールを使っているため、絵文字やスタイル付きの本文が可能。スマホ/PC閲覧どちらでも見やすくなります。


コメント