お題を伝えたらサンプルプログラムを教えてくれるGPTs「Python先生」
サンプルは初心者にやさしく、1つの.pyファイルで動作することを前提に生成してくれます。
ChatGPT - Python先生
お題を伝えればPythonのサンプルコードを作ってくれるPython先生。
1日1ネタ、思いつくままに作ってもらっています。
※デバッグは行っていません。プログラミングの参考にしてください。
エラーが出たらGPTさんに聞いてください。対処法も教えてくれるはず。
メールの自動送受信とソートのためには、Pythonのimaplib
とsmtp
ライブラリを使用してメールサーバーとの通信を行い、email
ライブラリでメールの解析や作成を行うことができます。また、受信したメールをソートするには、受信したメールのヘッダー情報(例えば日付や送信者)を基にしてPythonのソート機能を活用します。
このサンプルでは、まずGmailのIMAPを使ってメールを受信し、その後送信者に基づいてメールをソートし、最後にSMTPを使用してメールを送信する例を紹介します。Gmailを使用する場合、事前にアカウントで「安全性の低いアプリのアクセス」を許可するか、アプリパスワードを設定する必要があります。
必要なライブラリ
imaplib
とemail
: メールの受信と解析に必要です。Pythonの標準ライブラリなのでインストール不要です。smtplib
: メールの送信に必要です。これもPythonの標準ライブラリです。
サンプルコード
このコードは、特定のGmailアカウントからメールを受信し、送信者に基づいてソートした後、別のメールアドレスにソート結果を含むメールを送信します。
import imaplib
import email
from email.mime.text import MIMEText
import smtplib
# Gmailアカウント設定
username = 'your_email@gmail.com'
password = 'your_password'
smtp_server = 'smtp.gmail.com'
imap_server = 'imap.gmail.com'
# IMAPでメール受信
mail = imaplib.IMAP4_SSL(imap_server)
mail.login(username, password)
mail.select('inbox')
# 受信メール検索
status, messages = mail.search(None, 'ALL')
messages = messages[0].split()
emails = []
for num in messages[-10:]: # 最新の10件のメールを取得
status, data = mail.fetch(num, '(RFC822)')
for response_part in data:
if isinstance(response_part, tuple):
msg = email.message_from_bytes(response_part[1])
email_subject = msg['subject']
email_from = msg['from']
emails.append((email_subject, email_from))
# メールを送信者でソート
emails.sort(key=lambda x: x[1])
# SMTPを使用してメール送信
sent_from = username
to = ['receiver_email@example.com']
subject = 'Sorted Emails'
body = "Here are the sorted emails:\n" + "\n".join([f"Subject: {subj}, From: {frm}" for subj, frm in emails])
email_text = MIMEText(body, 'plain')
email_text['Subject'] = subject
email_text['From'] = sent_from
email_text['To'] = ", ".join(to)
server = smtplib.SMTP_SSL(smtp_server, 465)
server.login(username, password)
server.sendmail(sent_from, to, email_text.as_string())
server.close()
print("Email sent!")