Python基础 9 smtplib模块发邮件
1、smtplib模块的使用规范
# smtplib 用于邮件的发信动作 import smtplib # 发信方的信息:发信邮箱,QQ邮箱授权码 from_addr = 'xxx@qq.com' password = '你的授权码数字' # 收信方邮箱 to_addr = 'xxx@qq.com' # 发信服务器 smtp_server = 'smtp.qq.com' # 开启发信服务,这里使用的是加密传输 server = smtplib.SMTP_SSL() server.connect(smtp_server,465) # 登录发信邮箱 server.login(from_addr, password) # 发送邮件 server.sendmail(from_addr, to_addr, msg.as_string()) # 关闭服务器 server.quit()
2、完整版发送邮件流程
import smtplib # smtplib 用于邮件的发信动作 from email.mime.text import MIMEText # email 用于构建邮件内容 from email.header import Header # 用于构建邮件头 import csv # 引用csv模块,用于读取邮箱信息 # 发信方的信息:发信邮箱,QQ邮箱授权码 # 方便起见,你也可以直接赋值 from_addr = input('请输入登录邮箱:') password = input('请输入邮箱授权码:') # 发信服务器 smtp_server = 'smtp.qq.com' # 邮件内容 text='''亲爱的学员,你好! 我是吴枫老师,能遇见你很开心。 希望学习python对你不是一件困难的事情! 人生苦短,我用Python ''' # 待写入csv文件的收件人数据:人名+邮箱 # 记得替换成你要发送的名字和邮箱 data = [['wufeng ', 'wufeng@qq.com'],['kaxi', 'kaxi@qq.com']] # 写入收件人数据 with open('to_addrs.csv', 'w', newline='') as f: writer = csv.writer(f) for row in data: writer.writerow(row) # 读取收件人数据,并启动写信和发信流程 with open('to_addrs.csv', 'r') as f: reader = csv.reader(f) for row in reader: to_addrs=row[1] msg = MIMEText(text,'plain','utf-8') msg['From'] = Header(from_addr) msg['To'] = Header(to_addrs) msg['Subject'] = Header('python test') server = smtplib.SMTP_SSL() server.connect(smtp_server,465) server.login(from_addr, password) server.sendmail(from_addr, to_addrs, msg.as_string()) # 关闭服务器 server.quit()
3、发送邮件完整版的异常处理
try: server.sendmail(from_addr, to_addrs, msg.as_string()) print('恭喜,发送成功') except: print('发送失败,请重试')
4、多形式说明,上面内容只是发送文本&html的邮件
#文本&HTML格式 from email.mime.text import MIMEText #图片格式邮件 from email.mime.image import MIMEImage #综合格式邮件&附件 from email.mime.multipart import MIMEMultipart