Excel 메일 목록을 기반으로 메일을 보내는 코드

왜 이런 것을?



업무(업무 이외에서도 마시기의 출결이라든지)에서 별표를 만들어, 그에 근거해 아직 미제출의 사람에게 촉구를 실시하는, 이른바 잡무는 꽤 있습니다. 그래서 파이썬으로 처리하기로 결정했습니다. 만약 Microsoft Office365를 사용하고 있는 기업이라면 Automate Flow를 사용하면 이런 노코드로 할 수 있을 것입니다만, 몸 주변에서 사용할 수 있는 환경이 없기 때문에 제대로 준비했습니다.

참고로 한 것


  • 지루한 일은 Python에게 하자 - 비 프로그래머도 할 수있는 자동화 처리 프로그래밍 (2017/6/3) Al Sweigart (저), 아이카와 에이조 (번역)

  • 준비하는 것



    아래와 같은 "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 파일을 실행하기 만하면됩니다. 타임 스케줄을 설정하고 실행함으로써 매일 자동으로 음료회의 요금 재건 징수를 미지불의 사람에게 촉구할 수 있습니다. 좋은 메일 생활을.

    좋은 웹페이지 즐겨찾기