(2022/7/30 追記)
Gmailのポリシー変更により、gmailのアカウントではメールを発信できなくなりました。
代わりにmailgunというサービスで対応できました(無料)。
https://www.mailgun.com
クラウド上のサーバーでPythonのコードを実行できるPythonAnywhereでスクレイピングして結果をメールで送ろうと思いますが、まずはメールを送るところまで紹介したいと思います。思ったより簡単にできました。
まず、PythonAnywhereで無料でアカウントを作ります。
それから使用するGmailでダミーアカウントを作ります。もちろん、普段使っているGmailアカウントを使ってもいいのですが、パスワードをコード中に記載することになるので、お勧めしません。
また、無料ユーザーはSMTPは使えないのですが、Gmailは特別に使えるようになっているそうです。
https://help.pythonanywhere.com/pages/SMTPForFreeUsers/
さっそくですが、コードです。
Gmailのアカウント名とパスワードは書き換えてください。
import smtplib, ssl
from email.mime.text import MIMEText
# SMTP認証情報
account = "XXXXX@gmail.com" #書き換える
password = "ZZZZZ1234" #書き換える
# 送受信先
to_email = "YYYYY@gmail.com" #書き換えなくても大丈夫かも・・
from_email = "XXXXX@gmail.com" #書き換えなくても大丈夫かも・
# MIMEの作成
subject = "Test mail"
message = "テストメールですよ"
msg = MIMEText(message, "html")
msg["Subject"] = subject
msg["To"] = to_email
msg["From"] = from_email
server = smtplib.SMTP_SSL("smtp.gmail.com", 465, context=ssl.create_default_context())
server.login(account, password)
server.send_message(msg)
server.quit()
これをメモ帳か何かで"sendmail.py"などとして保存して、次のようにファイルをuploadします。
そして、bash consoleから実行するだけです。
python sendmail.py
参考にしたページなど:
初心者向け Pythonanywhereを使ってみよう
https://qiita.com/tonytani37/items/60c7185b7cc235f45daf
こちらでアカウントは作れるかと思います。
次は実際にスクレイピングしてそれをこのメール発信のしくみを作り、毎日決まった時間に届くところを紹介したいと思います!