🤖

【Python×OpenAI API】自動メール送信プログラム

2023/12/06に公開

結果

概要

私はメール本文の作成にすごく精神を消耗してしまうので、自動化したいと考えました。そこでGPTの出番です!将来的には、秘書のAIがいてメール作成業務を請け負ってくれることを想像しています。

秘書のイメージ

プログラム

import openai
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# OpenAI APIキー
openai.api_key = "YOUR_OPENAI_API_KEY"

# メールの内容を生成する関数
def generate_email_body(prompt):
    response = openai.chat.completions.create(
    model="gpt-3.5-turbo",#好きなモデルを指定
    max_tokens=100,#メールの文量を制限
    messages=[
        {"role": "system", "content": "あなたはメール作成業務に特化したアシスタントです"},#GPTのカスタム
        {"role": "user", "content": prompt}
    ]
    )
    print(response.choices[0].message.content)
    return response.choices[0].message.content

# 送信者と受信者のメールアドレス
sender_email = "送信者のメールアドレス"
receiver_email = "受信者のメールアドレス"

# GmailのSMTPサーバー設定
smtp_server = "smtp.gmail.com"
port = 587  # TLS用
password = "アプリパスワードを入力"

# メールの作成
message = MIMEMultipart("alternative")
message["Subject"] = "メール件名を入力"
message["From"] = sender_email
message["To"] = receiver_email

# プロンプトとしてメールの本文を生成
prompt = "作成してほしいメールの概要を入力"
email_body = generate_email_body(prompt)

# MIMETextオブジェクトの作成
part1 = MIMEText(email_body, "plain")

# メールメッセージに本文パーツを追加
message.attach(part1)

# メールサーバーへの接続とメールの送信
try:
    server = smtplib.SMTP(smtp_server, port)
    
    server.ehlo()  # サーバーの挨拶
    
    server.starttls()  # セキュアな接続の開始
    
    server.ehlo()  # 再度サーバーの挨拶
    
    server.login(sender_email, password)
    
    server.sendmail(sender_email, receiver_email, message.as_string())
    print("Email sent successfully!")
except Exception as e:
    # エラーの印刷
    print(e)
finally:
    server.quit()  # サーバーの接続を閉じる

今後の展望

現状ではメール本文の確認を行った後に送信するということが出来ないのでGPTsに移行して可能にしていきます。GPTsを使うことで何度か内容を練り直すことも可能だと考えています。
最後まで読んでいただきありがとうございました。

Discussion