首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python 3向客户致以祝贺

Python 3向客户致以祝贺
EN

Stack Overflow用户
提问于 2018-05-28 18:56:33
回答 1查看 501关注 0票数 0

如何通过电子邮件向我们的客户发送带有jpg文件附件的生日祝贺?我写脚本,他显示通知:

代码语言:javascript
复制
import time
import os

birthdayFile = 'birthdays.csv'

def checkTodaysBirthdays():
    fileName = open(birthdayFile, 'r')
    today = time.strftime('%m%d')
    flag = 0
    for line in fileName:
        if today in line:
            line = line.split(' ')
            flag =1

            os.system('notify-send "Birthdays Today: ' + line[1]
            + ' ' + line[2] + '"')
    if flag == 0:
            os.system('notify-send "No Birthdays Today!')

但是我不知道,如何通过电子邮件发送祝贺。文件birthdays.csv包含下一行:date, name, email

EN

回答 1

Stack Overflow用户

发布于 2018-05-28 20:09:09

您可以使用smtplib。下面是使用类的简单通知系统的实现,以利用干净的上下文管理器行为:

代码语言:javascript
复制
import datetime
import smtplib, csv
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email import Encoders

class SendEmail:
  def __init__(self, _to, _from = 'youremail@domaim.com', subject = 'Happy Birthday!', attachment = 'birthday.jpg'):
    self._to = _to
    self._from = _from
    self._subject = subject
    self.attachment = attachment
  def __enter__(self):
    msg = MIMEMultipart()
    for part in ['Subject', 'From', 'To']:
       msg[part] = getattr(self, f'_{i.lower()}')
    part = MIMEBase('application', "octet-stream")
    part.set_payload(open(self.attachment, "rb").read())
    Encoders.encode_base64(part)
    part.add_header('Content-Disposition', f'attachment; filename="{self.attachment}"')
    msg.attach(part)
    server = smtplib.SMTP(self.EMAIL_SERVER)
    server.sendmail(self.EMAIL_FROM, self.EMAIL_TO, msg.as_string())
    return self
  def __exit__(self, *args):
    pass
  @classmethod
  def send_bulk(cls, users:list):
    for date, name, email in users:
      _d = datetime.datetime.now()
      if _d.month in date and _d.day in date:
        with cls(email, subject = f'Happy Birthday, {name}!') as f:
          pass

with open('filename.csv') as f:
  SendEmail.send_bulk(csv.reader(f))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50564795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档