37,743
社区成员
发帖
与我相关
我的任务
分享"""
已实现的功能:
群发邮件包括附件
附件路径从TXT文件来读
接收方邮件地址也从TXT文件来读
"""
"""
还没解决的问题
(1)邮件标题或者正文有中文,会提示错误,英文和数字则没有错误
(2)接收端显示时间不正确,显示的不是北京时间
(3)如果跟多个好友群发,收件人会看到多个地址,希望收件人只看到自己的邮箱地址
""""
#!/usr/bin/env python3
#coding: utf-8
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
import datetime
import time
sender = '123456789@163.com' #发件人邮箱
smtpserver = 'smtp.163.com' #邮件服务器
username = '123456789' #发件人邮箱用户名
password = '***********' #发件人邮箱密码
mailHead = 'Mail Head' #邮件标题(出现中文会提示错误!!!!!!)
mailBody = 'Mail Body' #邮件正文(出现中文会提示错误!!!!!!)
#获取收件人地址列表
#格式为: xxx@163.com-girl
fAddrList = open("toMailAddr.txt")
toaddrList = []
for toAddr in fAddrList:
toAddr=toAddr.replace('\n', '') #去掉换行符
toaddrList.append(toAddr) #列表追加元素
msgRoot = MIMEMultipart()
attText = MIMEText(mailBody) #设置邮件正文
attText.set_charset('utf-8')
msgRoot.attach(attText) #邮件添加正文
#没有设置发邮件的时间!!!!!!
msgRoot['from'] = sender #发件人
msgRoot['Subject'] = mailHead #邮件标题
file = open("attrlist.txt") #附件列表
#构造附件
for line in file:
line=line.replace('\n', '') #去掉换行符
att = MIMEText(open(line, 'rb').read(), 'base64', 'utf-8')
att["Content-Type"] = 'application/octet-stream'
att["Content-Disposition"] = 'attachment;filename='+line+''
msgRoot.attach(att) #追加附件
#连接邮件服务器
smtp = smtplib.SMTP(smtpserver, 25)
smtp.login(username, password)
#跟好友群发消息
print ('@@@@@@ start send mail\n')
for element in toaddrList:
strTmp = element
splitIndex = strTmp.index('-') #截取'-'符号前面的地址
strTmp = strTmp[0:splitIndex]
msgRoot['to'] = strTmp #收件箱地址
#收件人会在发送地址中看到多个邮箱,希望只看到自己的邮箱地址!!!!!!
smtp.sendmail(sender, strTmp, msgRoot.as_string())
print ('\n###### stop send mail')
time.sleep(5) # 休眠5秒
smtp.quit()