为社团招新发了一个面试通过的邮件,需要批量完成,而且要指明新生的名字就做了个小东西来偷懒
#!/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6
# coding: utf-8
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import parseaddr, formataddr
from openpyxl import load_workbook
# 用于格式化MIMEText中的Subject,To,From的内容
def format_Addr(str):
name, addr = parseaddr(str)
return formataddr((Header(name, 'utf-8').encode(), addr))
# 从外部读入xlsx文件(这个excel是用来读入收信人的名字和对应的QQ号)
def getNamelist():
excel = load_workbook("/Users/xia/Desktop/list.xlsx") # openpyxl的加载xlsx的方法
sheet = excel.get_sheet_by_name(excel.get_sheet_names()[0]) # 指定要操作的Sheet名称
dic = {}
for i in range(1, sheet.max_row + 1):
# dic的key为新生的名字,value为Email地址
dic[sheet["A%d" % i].value.strip()] = "%d:%s%s" % (i, sheet["B%d" % i].value, "@")
print("一共有%d个新生" % (sheet.max_row, )) # 计数器,作为debug的时候用,可以无视
return dic # 最后分装在一个字典里
if __name__ == '__main__': # 这个main方法是用来测试getNamelist()
for name, emailAddr in getNamelist().items():
print("%s : %s" % (name, emailAddr))
# 这个试真正的实现批量发邮件
# if __name__ == '__main__':
# fromAddr = "EmailAddress@"
# password = "your password"
# session = smtplib.SMTP('', 25) # 指定邮件服务器 端口号25
# session.set_debuglevel(1) # 设置debug信息等级, 1 代表全部输出
# session.login(fromAddr, password) # 登录SMTP服务器
#
# count = 0 # 计数器debug用
# for name, emailAddr in getNamelist().items():
# # MIMEText,参数:正文,指定正文格式,指定编码格式
# text = MIMEText("亲爱的%s同学你好(。・∀・)ノ゙,恭喜你通过了微软技术俱乐部的面试,"
# "成为我们俱乐部大家庭的一员。在接下来的一年里,希望你们能学到自己感兴趣的知识,"
# "提升自己的学习能力,并对计算机产生进一步的兴趣。成为传说中的大佬~ 加油哦(O(∩_∩)O~~)",
# 'plain' % name , 'utf-8')
#
# text['To'] = format_Addr("%s " % (name, emailAddr))
# text['From'] = format_Addr("微软技术俱乐部 " % fromAddr)
# text['Subject'] = Header('一波迟来的面试结果', 'utf-8').encode()
# session.sendmail(fromAddr, [emailAddr], text.as_string())
# count += 1
# session.quit()
# print("一共发送了%d份邮件" %(count, ))