Python 3向客户发送祝贺
我如何通过电子邮件向我们的客户发送生日祝贺和随附的jpg文件? 我写脚本,他显示通知:Python 3向客户发送祝贺,python,python-3.x,python-3.6,Python,Python 3.x,Python 3.6,我如何通过电子邮件向我们的客户发送生日祝贺和随附的jpg文件? 我写脚本,他显示通知: 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
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
包含下一行:日期、姓名、电子邮件
您可以使用smtplib
。下面是一个简单通知系统的实现,它使用一个类来利用clean context manager behavor:
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))
首先,您真的不应该在
os.system
中使用字符串连接。想象一下,如果有人将自己的生日设置为;rm-rf/#代码>!其次,查看Python包含的smtplib:。