首页 > 代码库 > Python批量发邮件--加附件/抄送

Python批量发邮件--加附件/抄送

# !/usr/bin/env python
# -*- coding: UTF-8 -*-
import csv
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.utils import COMMASPACE, formatdate
from email import encoders
import time
def send_mail(server, fro, to, subject, text, chao):
    assert type(server) == dict
    assert type(to) == list
    msg = MIMEMultipart()
    msg[‘From‘] = fro
    msg[‘Subject‘] = subject
    msg[‘To‘] = COMMASPACE.join(to)  # COMMASPACE==‘, ‘
    msg[‘Cc‘] = chao  # COMMASPACE==‘, ‘
    msg[‘Date‘] = formatdate(localtime=True)
    msg.attach(MIMEText(text))
    xlsxpart = MIMEApplication(open(‘附件.docx‘, ‘rb‘).read())
    xlsxpart.add_header(‘Content-Disposition‘, ‘attachment‘, filename=‘附件.docx‘)
    msg.attach(xlsxpart)
    import smtplib
    smtp = smtplib.SMTP(server[‘name‘], server[‘port‘])
    smtp.ehlo()
    smtp.starttls()
    smtp.ehlo()
    smtp.login(server[‘user‘], server[‘passwd‘])
    smtp.sendmail(fro, to+[chao], msg.as_string())
    smtp.close()
if __name__ == ‘__main__‘:
    server = {‘name‘: ‘xx.163.com‘, ‘user‘: ‘xxxxx‘, ‘passwd‘: ‘xxx‘, ‘port‘: 25}
    fro = ‘xxxxxxxx‘
    subject = ‘xxxxx‘
    with open(‘1.csv‘, ‘U‘) as csvfile:
        # reader = csv.DictReader(csvfile)
        reader = csv.reader(csvfile)
        l = []
        for row in reader:
            l.append(row)
    print("开始")
    for i in l:
        name = i[0]
        mail = i[2:10]
        chao = i[1]
        b = ‘‘‘
        您好!
        值此“八一”建军节之际,祝愿贵公司蓬勃发展,建军节快乐!
                                                                                     
            ‘‘‘
        a = "尊敬的{0}:".format(name)
        text = a + b
        while ‘‘ in mail:
            mail.remove(‘‘)
        to = mail
        print(‘to‘, to, ‘ok‘, ‘chao‘, chao, ‘ok‘)
        time.sleep(7)
        send_mail(server, fro, to, subject, text, chao)



  1. csv 的格式

第一列是客户名称,第二列是抄送的人,第三列和后面的是要发送的人。


 msg[‘To‘] = COMMASPACE.join(to)  # COMMASPACE==‘, ‘
    msg[‘Cc‘] = chao  # COMMASPACE==‘, ‘
    smtp.sendmail(fro, to+[chao], msg.as_string())

需要特别注意的是上面,抄送的是 1个人。


Cc 是指要抄送,要注意抄送的是一个人还是多个。如果是多个,需要按照to的格式。


本文出自 “何全” 博客,请务必保留此出处http://hequan.blog.51cto.com/5701886/1953223

Python批量发邮件--加附件/抄送