Python学习日志0720群发邮件 python 发送带附件的邮件,收到的附件名都变成了tcmime.1774.1903.2076.bin格式解决办法

	该示例从excel表中读取客户名单,并群发邮件,判断性别修改称呼.添加附件,
import openpyxl, time
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication

usernames = {}
wb = openpyxl.load_workbook('邮件列表.xlsx')
ws = wb.active
for i in range(2, ws.max_row + 1):
    usernames.setdefault(ws['A' + str(i)].value, {})
    usernames[ws['A' + str(i)].value].setdefault('电子邮件', ws['D' + str(i)].value)
    if str(ws['B' + str(i)].value) == '男':
        usernames[ws['A' + str(i)].value].setdefault('称谓', '先生')
    else:
        usernames[ws['A' + str(i)].value].setdefault('称谓', '女士')
username = 'my@163.com'
passwrod = 'mypassword'
frommail = 'my@163.com'
subject = '*****公司的邀请函'
server = smtplib.SMTP(host='smtp.163.com', port=25)
server.login(user=username, password=passwrod)


def body(name, male):
    texts = '''
    尊敬的{}{}:
        邀请您参加本公司于3月1日于****举办的公司展销会!'''.format(name, male)
    return texts


for key in usernames.keys():
    msg = MIMEMultipart()
    msg['From'] = frommail
    if usernames[key]['电子邮件'] is None or str(usernames[key]['电子邮件']).find('@') == -1:
        print('{}没有填写电子邮件地址!或邮箱地址不正确!')
        continue
    print(key)
    msg['To'] = usernames[key]['电子邮件']
    msg['Subject'] = '***公司给' + key + '的邀请函'
    msg.attach(MIMEText(body(key, usernames[key]['称谓'])))
    with open('亲爱的.txt', mode='rb') as f:
        attfile = f.read()
    att = MIMEApplication(attfile) #最重要的两行.测试其他办法添加附件会导致tcmime.1774.1903.2076.bin的问题
    att.add_header('Content-Disposition', 'attachment', filename="亲爱的.txt")
    msg.attach(att)
    try:
        server.sendmail(frommail, usernames[key]['电子邮件'], msg.as_string()) #还有这行 测试过用server.send_message QQ邮箱接受的时候还是会把附件自动改成bin文件.
    except smtplib.SMTPSenderRefused:
        print('fail')
        time.sleep(10)
    except smtplib.SMTPDataError:
        print('fail2')
        time.sleep(10)
server.close()

新手日志,高手勿喷.
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值