600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 怎么用python批量发送邮件_Python实现批量发邮件

怎么用python批量发送邮件_Python实现批量发邮件

时间:2023-08-28 06:16:23

相关推荐

怎么用python批量发送邮件_Python实现批量发邮件

为社团招新发了一个面试通过的邮件,需要批量完成,而且要指明新生的名字就做了个小东西来偷懒

#!/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, ))

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。