简单学量化发送电子邮件

有时候人不在电脑旁,程序运行中发生了问题,或者程序需要定期发送报告,此时发送电子邮件就是一个方便快捷的方案。python的内置库smtplib就具有发送电子邮件的功能,今天我们以QQ邮箱为例,发送一个带附件的邮件给自己。

import time
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

#设置服务器所需信息
#qq邮箱服务器地址
mail_host = 'smtp.qq.com'  
#qq号
mail_user = '2*****5'  
#QQ邮箱为授权码) 
mail_pass = 'n*****c'   
#邮件发送方邮箱地址
sender = '2*****5@qq.com'  
#只发送一个人可以用字符串或列表,多于一个人用列表
receivers = ['2*****5@qq.com']

#这表示可以发送带附件的邮件
message = MIMEMultipart()
#设置email信息
#邮件主题       
message['Subject'] = '邮件主题' 
#发送方信息
message['From'] = sender 
#接受方信息     
message['To'] = receivers[0]  

#邮件内容设置
content = MIMEText("这是一个测试邮件", 'html', 'utf-8')
#附件的路径
with open('abc.csv','r',encoding='gbk' ,errors='ignore') as f:
    attachment = f.read()
attachment1 = MIMEText(attachment)
attachment1['Content-Disposition'] = 'attachment;filename="abc.csv"'
#将内容和附件附在邮件上
message.attach(content)
message.attach(attachment1)

#发邮件成功后返回时间
send_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
#登录并发送邮件
try:
    smtpObj = smtplib.SMTP() 
    #连接到服务器
    smtpObj.connect(mail_host,25)
    #登录到服务器
    smtpObj.login(mail_user,mail_pass) 
    #发送
    smtpObj.sendmail(
        sender,receivers,message.as_string()) 
    #退出
    smtpObj.quit() 
    print(f'邮件已发送,发送时间为{send_time}')
except smtplib.SMTPException as e:
    print('邮件发送出现了错误:',e,'请重试后发送') #打印错误信息

返回:邮件已发送,发送时间为2024-01-12 21:19:25

需要注意的是:

1、QQ邮箱的授权码路径:邮箱界面左上角的“设置”——“账号”——“
POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”——“继续获取授权码”,点开就行了。

2、做完第一条,会出现一个“短信验证”,让我们发短信,先不要发(浪费1毛钱啊)。点击“选择其他方式验证”,然后出现接收验证码或用QQ密保,这两个选一个用就行了。

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/74988
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 11 日 下午2:25
下一篇 2024 年 7 月 11 日 下午2:26

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注