Excel 메일 목록을 기반으로 메일을 보내는 코드
왜 이런 것을?
업무(업무 이외에서도 마시기의 출결이라든지)에서 별표를 만들어, 그에 근거해 아직 미제출의 사람에게 촉구를 실시하는, 이른바 잡무는 꽤 있습니다. 그래서 파이썬으로 처리하기로 결정했습니다. 만약 Microsoft Office365를 사용하고 있는 기업이라면 Automate Flow를 사용하면 이런 노코드로 할 수 있을 것입니다만, 몸 주변에서 사용할 수 있는 환경이 없기 때문에 제대로 준비했습니다.
참고로 한 것
준비하는 것
아래와 같은 "maillist.xlsx"라는 파일을 준비합니다.
mail_send.py
import openpyxl, smtplib
from email import message
wb = openpyxl.load_workbook('maillist.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
lastCol = sheet.max_column
latest_month = sheet.cell(row=1, column=lastCol).value
# Excelファイルの確認
unpaid_Members = {}
for r in range(2,sheet.max_row + 1):
payment = sheet.cell(row=r, column=lastCol).value
if payment != 'paid':
name = sheet.cell(row=r, column=1).value
email = sheet.cell(row=r, column=2).value
unpaid_Members[name] = email
# メールアカウントにログインする
smtp_host = 'smtp-mail.outlook.com'
smtp_port = 587
send_name = 'Master'
from_email ='[email protected]'
username = '[email protected]'
password = 'password'
smtp_obj = smtplib.SMTP(smtp_host, smtp_port)
smtp_obj.ehlo()
smtp_obj.starttls()
smtp_obj.login(username,password)
# コマンドラインの画面でユーザにパスワードの入力を要求して
# 入力したいときにはsysパッケージをインポートして下のコードを実行。
# smtp_obj.login(username,sys.argv[1])
# メールを送信する
for name, email in unpaid_Members.items():
msg = message.EmailMessage()
msg.set_content("""
{}様
お疲れさまです。
まだ来週の歓迎会の参加費未払いのようです。
確認をお願いします。
""".format(name))
msg['From'] = '{}<{}>'.format(send_name, from_email)
msg['Subject'] = '{}の支払い分に関しまして'.format(latest_month)
print('メールを送信しています {}...' .format(email))
sendmail_Status = smtp_obj.sendmail(from_email, email, msg.as_string())
if sendmail_Status != {}:
print('{}へメール送信中に問題が起こりました: {}'.format(email,sendmail_Status))
smtp_obj.quit()
사용법
나중에이 .py 파일을 실행하기 만하면됩니다. 타임 스케줄을 설정하고 실행함으로써 매일 자동으로 음료회의 요금 재건 징수를 미지불의 사람에게 촉구할 수 있습니다. 좋은 메일 생활을.
Reference
이 문제에 관하여(Excel 메일 목록을 기반으로 메일을 보내는 코드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Daisuke_MMM/items/9565c90a2a32a5ab9a9f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)