欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python之SMTP发送邮件信息

程序员文章站 2022-05-20 17:27:26
前言在做一个爬虫并由邮箱定时推送的小项目时,编程中涉及到了邮箱发送模块,而自己之前又没接触过python的邮箱模块,所以想蹭这个时候一并学了,开启学海无涯之路…1.SMTP电子邮件协议介绍目前常用的电子邮件协议有SMTP、POP3、IMAP4,它们都隶属于TCP/IP协议簇,默认状态下,分别通过TCP端口25、110和143建立连接。因为在本文中用的是SMTP电子邮件协议,下面着重介绍下SMTP。SMTP协议SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮...

前言

在做一个爬虫并由邮箱定时推送的小项目时,编程中涉及到了邮箱发送模块,而自己之前又没接触过python的邮箱模块,所以想蹭这个时候一并学了,开启学海无涯之路…

1. SMTP电子邮件协议介绍

目前常用的电子邮件协议有SMTP、POP3、IMAP4,它们都隶属于TCP/IP协议簇,默认状态下,分别通过TCP端口25、110和143建立连接。因为在本文中用的是SMTP电子邮件协议,下面着重介绍下SMTP。

SMTP协议
SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循SMTP协议的发送邮件服务器。SMTP认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。(来自百度百科

2. python中的SMTP

下面只介绍了发送纯文本格式和HTML格式,下面分别进行发送两种格式邮件的讲解

2.1 发送文本格式的邮件(QQ邮箱为例)

首先导入需要的库或类,smtplib库用来进行邮件连接并发送邮件,MIMEText类对邮件内容及格式进行设置;Header类用于添加一些邮件头信息,比如发件人,收件人,主题等。

import smtplib
from email.mime.text import MIMEText
from email.header import Header

接下来进行一些初始化,其中MIMEText对象中有三个需要我们设置的参数,一个是正文内容,一个是正文内容的类型,例如:”text/plain”和”text/html”,一个是正文内容的编码。,我这里设置的是文本类型,所以是plain,如下

sender = '3512919120@qq.com' #发件人邮箱
receiver = '3512919120@qq.com' #收件人邮箱
mail_pass = 'qgncadvnujlychgj' #qq邮箱授权码

#text为邮件正文内容,plain为文本格式,'utf-8'为编码格式
text = 'python 邮件发送测试...'
message = MIMEText(text, 'plain', 'utf-8')

#添加Header信息,From,To,Subject分别为发送者信息,接收者消息和邮件主题
message['From'] = Header(sender, 'utf-8')
message['To'] = Header(receiver, 'utf-8')

subject = 'Python STMP 邮件发送测试'
message['Subject'] = Header(subject, 'utf-8')

qq邮箱授权码获取步骤如下
python之SMTP发送邮件信息
python之SMTP发送邮件信息
接下来就是调用SMTP进行连接和发送了,如下

try:
    #smtp.xxx.com为邮箱服务类型,25为STMP的端口
    smtpObj = smtplib.SMTP('smtp.qq.com', 25)#smtp.xxx.com为邮箱服务类型,25为STMP
    #smtpObj = smtplib.SMTP_SSL('smtp.xxx.com', 'xxx邮件服务的端口号')     
    
    smtpObj.login(sender, mail_pass)#登录
    smtpObj.sendmail(sender, receiver, message.as_string())#发送
    print ("邮件发送成功")
except smtplib.SMTPException:
    print ("Error: 邮件发送失败")
    

发送文本邮件完整代码和效果如下

#1. 发送文本文件

import smtplib
from email.mime.text import MIMEText
from email.header import Header

sender = '3512919120@qq.com' #发件人邮箱
receiver = '3512919120@qq.com' #收件人邮箱
mail_pass = '你自己邮箱的授权码' #qq邮箱授权码

#text为邮件正文内容,plain为文本格式,'utf-8'为编码格式
text = 'python 邮件发送测试...'
message = MIMEText(text, 'plain', 'utf-8')

#添加Header信息,From,To,Subject分别为发送者信息,接收者消息和邮件主题
message['From'] = Header(sender, 'utf-8')
message['To'] = Header(receiver, 'utf-8')

subject = 'Python STMP 邮件发送测试'
message['Subject'] = Header(subject, 'utf-8')


try:
    #smtp.xxx.com为邮箱服务类型,25为STMP的端口
    smtpObj = smtplib.SMTP('smtp.qq.com', 25)#smtp.xxx.com为邮箱服务类型,25为STMP
    #smtpObj = smtplib.SMTP_SSL('smtp.xxx.com', 'xxx邮件服务的端口号')     
    
    smtpObj.login(sender, mail_pass)#登录
    smtpObj.sendmail(sender, receiver, message.as_string())#发送
    print ("邮件发送成功")
except smtplib.SMTPException:
    print ("Error: 邮件发送失败")


python之SMTP发送邮件信息

2.2 发生HTML格式的邮件(QQ邮箱为例)

发送HTML格式的邮件其实很简单,只是把发送的text变为html文本以及将MIMEText对象中文本格式改为html就可以了,如下

html = '''
<p>Python STMP 发生html邮件格式测试。。。</p>
<p><a href='https://www.baidu.com'>这是一个通往百度的链接</a></p>
'''
message = MIMEText(html, 'html', 'utf-8')

如果要同时发给多个人的话,可将receiver设置为一个列表,如下

receiver = ['3512919120@qq.com','12646@qq.com']

发送HTML格式的邮件完整代码和效果如下

#2.发送html格式的邮件

import smtplib
from email.mime.text import MIMEText
from email.header import Header

sender = '3512919120@qq.com'
pass_word = 'qq邮箱授权码'
receiver = '3512919120@qq.com'

html = '''
<p>Python STMP 发生html邮件格式测试。。。</p>
<p><a href='https://www.baidu.com'>这是一个通往百度的链接</a></p>
'''

message = MIMEText(html, 'html', 'utf-8')

message['From'] = Header(sender, 'utf-8')
message['To'] = Header(receiver, 'utf-8')

subject = 'Python SMTP 发送html格式邮件 测试'
message['Subject'] = Header(subject, 'utf-8')

try:
    smtp = smtplib.SMTP('smtp.qq.com', 25)
    smtp.login(sender, pass_word)
    smtp.sendmail(sender, receiver, message.as_string())
    print("邮件发送成功")
except smtplib.SMTPException:
    print("Error: 邮件发送失败")
    

python之SMTP发送邮件信息

如果有帮助到你,就点个赞吧!

本文地址:https://blog.csdn.net/qq_44690947/article/details/107549248

相关标签: python爬虫