编程技术文章分享与教程

网站首页 > 技术文章 正文

简单学量化——发送电子邮件 发电子邮件怎么操作

hmc789 2024-11-08 19:42:41 技术文章 1 ℃

有时候人不在电脑旁,程序运行中发生了问题,或者程序需要定期发送报告,此时发送电子邮件就是一个方便快捷的方案。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密保,这两个选一个用就行了。

标签列表
最新留言