300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > python通过QQ邮箱或163邮箱发送邮件(可带附件)

python通过QQ邮箱或163邮箱发送邮件(可带附件)

时间:2023-07-21 13:01:19

相关推荐

python通过QQ邮箱或163邮箱发送邮件(可带附件)

python通过QQ邮箱或163邮箱发送邮件(可带附件)

1、邮箱开启POP3/SMTP/IMAP服务

邮箱需开启POP3/SMTP/IMAP服务,启动服务时会一次性显示授权码,请记录,登录时需要使用

具体可参考:/u014803081/article/details/73176082

发送方发送邮件后,若是接收方无法收到邮件,该代码依然会返回True,但发送方会收到邮件退回的通知

2、邮件服务器的SMTP服务地址

qq发送邮件服务器的SMTP服务地址是: 端口可用465或587

163发送邮件服务器的SMTP服务地址是: 端口可用465

3、代码

import os.pathimport smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom email.utils import formataddrdef send_mail(my_sender:str,my_pass:str,receivers:list,msg,SMTP_server="",port=465):"""发送邮件my_sender:收件方my_pass:发件邮箱的授权码,等会登陆会用到receivers:收件人SMTP_server:发件人邮箱的SMTP服务器,默认163邮箱port:发件人邮箱中的SMTP服务器SSL协议端口msg:"""ret = Truetry:server = smtplib.SMTP_SSL(SMTP_server, port)server.login(my_sender, my_pass)server.sendmail(my_sender, receivers, msg.as_string())server.quit()except Exception as e:print(e)ret = Falsereturn retdef set_mail_file_msg(my_sender,receivers:list,title,text_input:str,file_dir=None,file_name=None):"""配置邮件内容与附件,若file_dir或者file_name不输入,则不发送附件my_sender:收件方receivers:收件人title:邮件的主题text_input:正文信息file_dir:附件所在目录file_name:附件文件名称"""# 实例化邮件信息内容msg = MIMEMultipart()msg['From'] = formataddr((None, my_sender)) # 括号里的对应发件人邮箱昵称、发件人邮箱账号msg['To'] = ';'.join(receivers)msg['Subject'] = titlemsg.attach(MIMEText(text_input, 'plain', 'utf-8'))# 附件if file_dir and file_name:file_path = os.path.join(file_dir, file_name)if os.path.exists(file_path):att1 = MIMEText(open(file_path, 'rb').read(), 'base64', 'utf-8')att1["Content-Type"] = 'application/octet-stream'att1["Content-Disposition"] = 'attachment; filename="' + file_name + '"'msg.attach(att1)else:print(f"文件不存在,请检查:{file_path}")return Nonereturn msgif __name__ == '__main__':# 发送方与接收方信息my_sender = '*****@'my_pass = '*****'receivers = [my_sender,"*****@"]# 邮件内容与附件text_input = """ -9-13 测试报告html"""file_dir = r'附件所在目录'file_name = "reportCN.html"title = "test_send_mail"msg = set_mail_file_msg(my_sender, receivers, title, text_input,file_dir, file_name) # 发附件# msg = set_mail_file_msg(my_sender, receivers, title, text_input) # 不发附件# print(msg)# 发送邮件ret = send_mail(my_sender,my_pass,receivers,msg)print(ret)if ret:print("邮件发送成功")else:print("邮件发送失败")

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