【Python】日次報告メールを送信する【Outlook】

2024年2月13日Python

処理概要

Outlookで日次報告メールを送信する


処理内容

  • Outlookで添付ファイル付のメールを送信する
  • 添付ファイルが1つ以上あれば送信する
  • ファイル数が正しくない場合はメール本文に正しくないことを記載する

動作環境

  • WindowsでOutlookを使う前提

添付ファイル

  • 売上報告(東京本社)_yyyymmdd.xlsx
  • 売上報告(名古屋支社)_yyyymmdd.xlsx
  • 売上報告(大阪支社)_yyyymmdd.xlsx
  • yyyymmdd は処理年月日

宛先について

  • ; 区切りで複数指定可能

送信処理の違いについて

mail.display(True)

  • 作成したメールを表示して手動で送信する

mail.Send()

  • 確認せずそのまま送信する

コード

import datetime
import glob

import win32com.client

# ========================================
# 初期処理
# ========================================
# 変数の設定
file_ymd = datetime.datetime.today().strftime('%Y%m%d')
folder_path = r'C:\temp'
file_name = r'\売上報告*_' + file_ymd + '.xlsx'

# Outlookオブジェクトの設定
outlook = win32com.client.Dispatch('Outlook.Application')
mail = outlook.CreateItem(0)

# メール内容の設定
mail.bodyformat = 1  # 1:テキスト 2:HTML 3:リッチテキスト
mail.to = 'tokyo@test.com ; nagoya@test.com ; osaka@test.com'
mail.subject = '日時売上報告' + file_ymd
mail.body = '''\
売上報告書を送信します。
'''

# 添付ファイルの設定
# ワイルドカードで添付ファイルを指定する
files = glob.glob(folder_path + file_name)
print('---添付ファイルを表示---')
for add_file in files:
    print(glob.glob(add_file))
    mail.attachments.Add(add_file)

# ========================================
# メイン処理
# ========================================
if len(files) == 0:
    print('---添付ファイルがありません---')

elif len(files) != 3:
    mail.body = mail.body + '\n※添付ファイルに過不足があります'
    mail.display(True)
    # mail.Send()
    print('---メール送信完了---')

else:
    mail.display(True)
    # mail.Send()
    print('---メール送信完了---')

Python

Posted by junichi