8行代码~搞定python发邮件

一、SMTP和发邮件所用模块简介

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

8行代码~搞定python发邮件

python发邮件常用两个模块是smtplib和email,这俩模块是python自带的,只需导入即可使用。划重点:smtplib模块主要负责发送邮件,email模块主要负责构造邮件。

smtplib模块主要负责发送邮件:是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容)。

email模块主要负责构造邮件:指的是邮箱页面显示的一些构造,如发件人,收件人,主题,正文,附件等。

二、smtplib模块

smtplib使用较为简单。以下是最基本的语法。导入及使用方法如下:

import smtplib
#实例化SMTP() 
smtp = smtplib.SMTP() 
 #connect(host,port):host:指定连接的邮箱服务器。
smtp.connect('smtp.qq.com,25')
#登录。user:登录邮箱的用户名。password:登录邮箱的授权码
smtp.login(username, password)
#发送邮件from_addr:邮件发送者地址。to_addrs:邮件接收者地址。向多人发送可设置成列表。msg:邮件内容。
smtp.sendmail(from_addr,to_addrs,msg,...):
#用于结束SMTP会话。
smtp.quit()

三、email模块

1.email模块下的mime模块下有常用有三个大类。

from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart

简单说下他们的关系,如果构造一个MIMEText对象,就表示一个文本邮件对象,如果构造一个MIMEImage对象,就表示一个作为附件的图片对象,要把多个对象组合起来,就用MIMEMultipart对象,他代表的是整个邮件。

四、邮件发送实例代码

注意:发邮件前一定要先开通自己POP3/SMTP服务,开通后会得到授权码,这个授权码是在发送邮件时要用的。

8行代码~搞定python发邮件

模拟自己#!/usr/bin/python
#  # Created by 老刘 on 2020/5/14
# #  Author: Lao Liu <412842374@qq.com>
# 首先导入email模块构造邮件和smtplib模块
from email.mime.text import MIMEText
import smtplib
# 构造邮件,内容为hello world
msg = MIMEText('hello world')
# 设置邮件主题
msg["Subject"] = "新闻提醒"
# smtp协议的默认端口是25,QQ邮箱smtp服务器端口是465,第一个参数是smtp服务器地址,第二个参数是端口,第三个参数是超时设置,这里必须使用ssl证书,要不链接不上服务器
server = smtplib.SMTP_SSL('smtp.qq.com', 465, timeout = 2)
# 登录邮箱,第二个参数为开启pop3/smtp服务时腾讯给出的授权码
server.login('412842374@qq.com', 'zxfhotcrmbjee')
#发送邮件,第一个参数是发送方地址,第二个参数是接收方列表,列表中可以有多个接收方地址,表示发送给多个邮箱,msg.as_string()将MIMEText对象转化成文本
server.sendmail('412842374@qq.com', ['412842374@qq.com'], msg.as_string())
#结束对话
server.quit()


8行代码~搞定python发邮件