资讯专栏INFORMATION COLUMN

python发送邮件

wyk1184 / 1571人阅读

摘要:邮箱传输协议简单邮件传输协议由源地址到目的地址的传输规则邮箱服务器默认端口生成第三方登录邮箱的密钥,这样从第三方登录邮箱,不能输入密码,只需要输入第三方密钥就行需要使用到的库主要是负责发送邮件,连接邮箱服务器,登录邮箱构造邮件,邮件显示的内

QQ邮箱传输协议

SMTP:简单邮件传输协议(由源地址到目的地址的传输规则)

smtp.qq.com :QQ邮箱服务器

默认端口:25

生成第三方登录QQ邮箱的密钥,这样从第三方登录QQ邮箱,不能输入密码,只需要输入第三方密钥就行

需要使用到的库

smtplib :主要是负责发送邮件,连接邮箱服务器,登录邮箱

email :构造邮件,邮件显示的内容,收件人,发件人

import smtplib
from email.mime.text import MIMEText  # 发送文本
from email.mime.image import MIMEImage # 发送图片
from email.mime.multipart import MIMEMultipart # 将多个对象结合起来
from email.utils import formataddr
from email.header import Header
发送邮件简单代码
sender_from = "604421385@qq.com" # 发件人邮箱
sender_to="icessun@qq.com" # 收件人邮箱

# 定义一个函数,接收传入的邮件主题,邮件内容为参数
def send_email(eamil_subject:str,email_content:str)->int:
    try:
         # 构造邮件的内容  plain:表示发送的是文本;HTML:表示发送的超文本
         message = MIMEText(email_content, "plain", "utf-8")
         # 主题
         message["Subject"] = Header(eamil_subject, "utf-8")
        message["From"] = formataddr(["icessun", sender_from])
        message["To"] = formataddr(["604421385", sender_to])

        # 构造发送邮件的对象smtp,实例化SMTP()
        smtp = smtplib.SMTP()
        # 连接邮箱服务器 host 和 port
        smtp.connect("smtp.qq.com", 25)   # 可以简写  smtp=smtplib.SMTP("smtp.qq.com",25)
        # 登陆邮箱  第二个参数是qq邮箱授权码
        smtp.login(sender_from, "xxxxxxxx")
        # 发送方,接收方(可以有多个["接收地址1","接收地址2",....]),发送的消息(字符串类型,使用邮件格式)
        # message.as_string() 将MIMEText对象变为str
        smtp.sendmail(sender_from, sender_to, message.as_string())
        # 退出邮箱,结束SMTP会话
        smtp.quit()
        return 0
    except:
        return -1

email中的 MIMEText

plain:表示发送的文本,基本的

# 构造邮件的内容  plain:表示发送的是文本;HTML:表示发送的超文本
email_content = "这是发送的文本消息"
message = MIMEText(email_content, "plain", "utf-8")

html:表示发送的超文本

base64:表示添加附件

# 打开文件所在的位置
send_file=open(r"F:password.txt").read() # 二进制文件
message = MIMEText(send_file, "base64", "utf-8")
message["Content-Type"] = "application/octet-stream"
# 内容展示的方式:attachment ,中文名字显示不成功 aaa.txt 英文才能正常显示
# message["Content-Disposition"] = "attachment;filename="aaa.txt""
message.add_header("Content-Disposition","attachment",filename="aaaa.txt")

email中的 Header 和 formataddr

发送的邮件发送方和接收方全部使用 Header;不会显示具体的发件人和收件人的邮箱地址

message["From"] = Header("python","utf-8")
message["To"] = Header("参数", "utf-8")

发送的邮件发送方和接收方全部使用 formataddr;显示具体的发件人和收件人的邮箱地址,和为其设置的别名

# 默认字符编码为 utf-8,第一个参数传入列表[发件人的名字,邮箱地址]
message["From"] = formataddr(["hhhh", sender_from]) 
message["To"] = formataddr(["604421385", sender_to])

email中的MIMEMultipart

mixed:邮件包含附件,向上兼容

related:邮件正文包含图片,声音等内嵌资源

alternative:邮件只是纯文本,超文本

message = MIMEMultipart("mixed")

# 然后把 邮件的 Subject From To 添加到 message中
message["Subject"] = Header(email_subject,"utf-8")
message["From"] = formataddr(["test",sender_from])
message["To"] = formataddr(["接收者",sender_to])

将其他文本添加到 Multipart 中

message.attach(text_plain)   # MIMEText 对象  
message.attach(text_html)    # 超文本
message.attach(text_att)   # 附件
message.attach(image)   # MIMEImage 对象 

发送邮件的多功能代码:

发送文本

发送图片

发送超文本

发送附件

代码地址
回复:QQ邮箱 获取

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42944.html

相关文章

  • 简单三步,用 Python邮件

    摘要:使用脚本发送邮件并不复杂。以下为思路导图模块与发送邮件相关的模块是关于简单邮件传输协议的操作模块,在发送邮件的过程中起到服务器之间互相通信的作用。 0. 前言 发送电子邮件是个很常见的开发需求。比如你写了个监控天气的脚本,发现第二天要下雨,或者网站上关注的某个商品降价了,就可以发个邮件到邮箱来提醒自己。 使用 Python 脚本发送邮件并不复杂。不过由于各家邮件的发送机制和安全策略不同...

    haobowd 评论0 收藏0
  • 利用Python自动发送邮件

    摘要:自动发送邮件我们把报表做出来以后一般都是需要发给别人查看,对于一些每天需要发的报表或者是需要一次发送多份的报表,这个时候可以考虑借助来自动发送邮件。一份邮件的组成下图是中发送一份邮件的界面,主要包含发件人收件人抄送人主题正文附件这几部分。 ...

    leo108 评论0 收藏0
  • Python发送电子邮件

    摘要:是发送邮件的协议,内置对的支持模块和模块可以发送纯文本邮件邮件以及带附件的邮件简单邮件传输协议,是从源地址到目的地址传送邮件的规则,由该协议控制信件的中转方式的提供了一种很方便的途径传递电子邮件,对进行了简单的封装发送纯文本邮件导入模块 SMTP是发送邮件的协议,Python内置对SMTP的支持(smtplib模块和email模块),可以发送纯文本邮件、HTML邮件以及带附件的邮件 S...

    李世赞 评论0 收藏0
  • Python 发送 email 的三种方式

    摘要:本米扑博客先介绍几个最简单的发送邮件方式记录下,像邮件,附件等也是支持的,需要时查文档即可。特别注意命令发送邮件,默认用端口号,由于阿里云腾讯云等封禁了端口号,因此本示例需在开通端口机器上测试执行命令收件结果 Python发送email的三种方式,分别为使用登录邮件服务器、使用smtp服务、调用sendmail命令来发送三种方法 本文原文自米扑博客:Python 发送 email 的三...

    kun_jian 评论0 收藏0
  • Python 发送邮件

    摘要:程序人员对于邮件自动化的日常需求还是很高的。更是自带一套模块实现邮件发送。正是为了实现这个而生的,一句话就可以完成所有的登录发送文字附件等功能。参考一句话发送邮件正常一点的发送邮件 程序人员对于邮件自动化的日常需求还是很高的。但是入过了Linux的命令行邮件客户端如Sendmail, Mutt, Alpine等坑之后,发现现代其实很少人真的在用它们实现邮件自动化,根据搜索引擎里相关文章...

    tuomao 评论0 收藏0

发表评论

0条评论

wyk1184

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<