【Python】メール一斉送信(Outlook)

python

Pythonファイルと同じ階層に用意するもの

〇body.txt (メールの本文)

担当者様

お世話になります。
・・・以上、よろしくお願いいたします。

〇buyer_list.xlsx(メール送信リスト)

Python

 

pip install smtplib
pip install pywin32
import glob
import os
import re
import pandas as pd

import smtplib, ssl, os
from email.mime.text import MIMEText
import datetime
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.base import MIMEBase
from email import encoders

#ファイルパス
path_text = 'body.txt'
path_maillist = 'buyer_list.xlsx'
#メール本文を取得
with open(path_text, 'r', encoding='utf-8') as f:
text = f.read()

df = pd.read_excel(path_maillist)
df = df.dropna(subset=['TO']) #宛先に値がない行は削除
# df = df[df['対応'] == 'Not Done'] #対応が未完の物だけ抽出する場合
df
#プログラム1|ライブラリ設定
import openpyxl as px
import os
import datetime
import win32com.client

#プログラム2|outlookを起動
outlook = win32com.client.Dispatch("Outlook.Application")
# ブックを取得
book = px.load_workbook(path_maillist)
# シートを取得
sheet = book['メール内容']


i=0
for idx, data in df.iterrows():
    _subject = data['件名']
    name_To = data['担当者名']
    To_send = data['TO']
    CC_send = data['CC']
    plusBody = data['plusBody']
    #CCが空の時は型式がfloatになるため空文字を追加
    if pd.isna(CC_send):
        CC_send = ''
        finished = data['送信ステータス']

    #対応がNot Doneの場合は処理
    if finished != '送信済':

        text_add = text + '\n' + "■■■■■■■■■該当の商品ページ■■■■■■■■" + '\n' +plusBody

        subject = '【依頼】' + _subject #件名の作成
        maintext = re.sub('担当者', name_To, text_add) #宛名を置換

        #print(idx)
        #print(finished)
        #print(datetime.datetime.now().strftime('%Y年%m月%d日 %H:%M:%S'))

        #プログラム13|Outlookメールを作成
        mymail = outlook.CreateItem(0) #--------------変数mymailでメールを作成
        mymail.BodyFormat = 3 #--------------メールの本文フォーマットを3(リッチテキスト)にする
        mymail.To = To_send
        mymail.cc = "netshop@unimed.co.jp"
        mymail.Subject = _subject
        mymail.Body = maintext

        #セルに書き込む
        sheet.cell(row=i+2,column=6).value = '送信済 '
        sheet.cell(row=i+2,column=7).value = datetime.datetime.now().strftime('%Y年%m月%d日 %H:%M:%S')
        mymail.Send()
        i=i+1

book.save(path_maillist)

 

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