【サンプルでPython学習】メール操作の自動化 サンプルプログラム【Gmail】

プログラミング
この記事は約4分で読めます。

お題を伝えたらサンプルプログラムを教えてくれるGPTs「Python先生」

サンプルは初心者にやさしく、1つの.pyファイルで動作することを前提に生成してくれます。

ChatGPT - Python先生
お題を伝えればPythonのサンプルコードを作ってくれるPython先生。

1日1ネタ、思いつくままに作ってもらっています。

 

※デバッグは行っていません。プログラミングの参考にしてください。

エラーが出たらGPTさんに聞いてください。対処法も教えてくれるはず。

 

 

メールの自動送受信とソートのためには、Pythonのimaplibsmtpライブラリを使用してメールサーバーとの通信を行い、emailライブラリでメールの解析や作成を行うことができます。また、受信したメールをソートするには、受信したメールのヘッダー情報(例えば日付や送信者)を基にしてPythonのソート機能を活用します。

このサンプルでは、まずGmailのIMAPを使ってメールを受信し、その後送信者に基づいてメールをソートし、最後にSMTPを使用してメールを送信する例を紹介します。Gmailを使用する場合、事前にアカウントで「安全性の低いアプリのアクセス」を許可するか、アプリパスワードを設定する必要があります。

必要なライブラリ

  • imaplibemail: メールの受信と解析に必要です。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!")
 

このコードを実行する前に、your_email@gmail.comyour_passwordreceiver_email@example.comをそれぞれ実際のメールアドレスとパスワード、受信者のメールアドレスに置き換えてください。

注意

  • メールのパスワードやアプリパスワードをコードに直接記載するのはセキュリティ上推奨されません。本番環境では環境変数や安全な方法で認証情報を管理してください。
  • Gmailの設定やセキュリティポリシーは変更されることがあります。事前に最新の情報を確認してください。

もしよろしければ、ブログランキングについても

ポチっとしていただければ嬉しいです。

 


セミリタイアランキング

 

にほんブログ村 その他生活ブログ 早期リタイアへ
にほんブログ村

 

 

 

タイトルとURLをコピーしました