python 实现发送邮件

Python自动发送邮件,使用到python内置库email和 smtplib协议库。

"""
(1) MIMEMultipart类型基本格式
● MIMEMultipart(‘mixed’)类型
如果一封邮件中含有附件,那邮件的中必须定义multipart/mixed类型,邮件通过multipart/mixed
类型中定义的boundary标识将附件内容同邮件其它内容分成不同的段。基本格式如下:
msg=MIMEMultipart(‘mixed’)

● MIMEMultipart(‘alternative’)类型
MIME邮件可以传送超文本内容,但出于兼容性的考虑,一般在发送超文本格式内容的同时会同时发送一
个纯文本内容的副本,如果邮件中同时存在纯文本和超文本内容,则邮件需要在Content-Type域中定义
multipart/alternative类型,邮件通过其boundary中的分段标识将纯文本、超文本和邮件的其它内
容分成不同的段。基本格式如下:
msg=MIMEMultipart(‘alternative’)

● MIMEMultipart(‘related’)类型
MIME邮件中除了可以携带各种附件外,还可以将其它内容以内嵌资源的方式存储在邮件中。比如我们在
发送html格式的邮件内容时,可能使用图像作为 html的背景,html文本会被存储在alternative段中,
而作为背景的图像则会存储在multipart/related类型定义的段中。基本格式如下:
msg=MIMEMultipart(‘related’)
"""
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage

file_img = r"C:\Users\bingo\Desktop\The crawler\1.jpg"
file_xml = r"C:\Users\bingo\Desktop\The crawler\out.xml"
file_js = r"C:\Users\bingo\Desktop\The crawler\a.js"

qq_email = "********@qq.com"
qq_smtp_no = "klsnipdnjptohade"    # 不是邮箱密码,是IMAP/SMTP或者POP3/SMTP服务授权码,需自己开通
receive_email = "*******@163.com"

# 加密,一般为465端口
# server = smtplib.SMTP_SSL("smtp.qq.com", 465)
# # 不加密,明文传输
server = smtplib.SMTP("smtp.qq.com", 25)
# 登陆服务器
server.login(qq_email, qq_smtp_no)

# 实例一个总的邮件对象,声明邮件主题,收件人发件人信息
msg_root = MIMEMultipart("related")                           # 声明有见类型
msg_root["From"] = Header("Bingo<{}>".format(qq_email))       # 自定义邮件发送人
msg_root["To"] = Header(receive_email)                        # 自定义有见邮件接收人
msg_root["Subject"] = Header("测试邮件Test Email", "utf8")     # 自定义邮件主题

# 文本消息
# msg_root.attach(MIMEText("你好,请查收附件"))
# msg_txt = MIMEText("你好,请查收附件", "plain", "utf-8")
# msg_root.attach(msg_txt)

# 文本附件
f_obj = open(file_xml, "rb")
msg_xml = MIMEText(f_obj.read(), "base64", "utf-8")
f_obj.close()
msg_xml["Content-Type"] = 'application/octet-stream'
msg_xml['Content-Disposition']='attachment; filename="out.xml"'
msg_root.attach(msg_xml)

f_obj = open(file_js, "rb")
msg_js = MIMEText(f_obj.read(), "base64", "utf-8")
f_obj.close()
msg_js["Content-Type"] = 'application/octet-stream'
msg_js['Content-Disposition']='attachment; filename="a.js"'
msg_root.attach(msg_js)

# ++++++++++++ 超文本+图片显示 +++++++++++++++++++++
msg_alternative = MIMEMultipart("alternative")
mail_msg = """
<p>你好:</p>
<p>&emsp;&emsp;请查收附件!</p>
<p><a href="http://www.baidu.com">百度一下,你就知道</a></p>
<p>图片演示:</p>
<p><img src="cid:image1" width=500 height=300></p>
"""
msg_html = MIMEText(mail_msg, "html", "utf-8")
msg_alternative.attach(msg_html)
msg_root.attach(msg_alternative)


f_obj = open(file_img, "rb")
msg_img = MIMEImage(f_obj.read())
f_obj.close()
msg_img.add_header("Content-ID", "image1")
msg_root.attach(msg_img)
# ++++++++++++++++++++++++++++++++++++++++++++++++++

# 图片附件
f_obj = open(file_img, "rb")
msg_img = MIMEImage(f_obj.read(), "image")
f_obj.close()
msg_img["Content-Type"] = 'application/octet-stream'
msg_img['Content-Disposition']='attachment; filename="111.jpg"'
msg_root.attach(msg_img)

res = server.sendmail(qq_email, [receive_email], msg_root.as_string())
print("邮件发送成...")
server.quit()                    # 关闭服务 

运行结果:

G:\Anaconda\python.exe "C:/Users/bingo/Desktop/The crawler/学习/邮件.py"
邮件发送成...
Process finished with exit code 0

接收到的邮件:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Python可以使用不同的库来实现发送邮件的功能。根据提供的引用内容,有三种不同的方法可以实现发送邮件。 第一种方法是使用`outlook`库来发送邮件。这个方法需要导入`os`、`time`、`autoit`和`win32com.client`等库,并创建一个`OutlookUtills`类来实现发送邮件的功能。具体的代码可以参考引用\[1\]。 第二种方法是使用`smtplib`库来发送邮件。这个方法需要导入`smtplib`、`email.mime.text`和`email.header`等库,并创建一个`SMTP`对象来连接邮件服务器,然后使用`login`方法登录邮箱,构造`MIMEText`对象来设置邮件内容,最后使用`sendmail`方法发送邮件。具体的代码可以参考引用\[2\]。 第三种方法也是使用`email.mime.text`和`email.header`库来发送邮件。这个方法只需要构造`MIMEText`对象来设置邮件内容,然后可以直接发送邮件。具体的代码可以参考引用\[3\]。 根据你的需求和具体情况,你可以选择其中一种方法来实现发送邮件的功能。 #### 引用[.reference_title] - *1* [python发送邮件的几种常用方法](https://blog.csdn.net/z1004983289/article/details/129364699)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [python发送邮件](https://blog.csdn.net/qq_40243750/article/details/126032582)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

八戒无戒i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值