发送邮件

407 阅读2分钟

发送邮件

如何发一封简单的邮件 步骤:构造邮件(email)- 发送邮件(smtplib)-发送成功

1. smtplib模块

import smtplib

server = smtplib.SMTP()
server.connect(host, port)
server.login(username, password)
server.sendmail(sender, to_addr, msg.as_string())
server.quit()

解析:
(1)第一行,是引入smtplib模块
(2)第三行,server是一个变量,smtplib.SMTP()是变量server的值,SMTP 是smtpli把模块中的一个类
(3)SMTP (Simple Mail Transfer Protocol)翻译过来是“简单邮件传输协议”的意思,SMTP 协议是由源服务器到目的地服务器传送邮件的一组规则
(4)第四行代码,连接(connect)指定的服务器,host是指定连接的邮箱服务器;port 是端口,默认端口号是25
(5)若使用的是QQ邮箱,SMTP服务器地址是:smtp.qq.com,端口是465或587;QQ 邮箱采用的加密方式是SSL
如果端口是用SSL加密,请这样写代码。其中server是变量名:server = smtplib.SMTP_SSL()
如果出现编码错误UnicodeDecodeError,你可以这样写:server.connect('smtp.qq.com',465,'utf-8'):server.connect('smtp.qq.com', 465)
(6)第五行代码,login是登录的意思,也就是登录你指定的服务器用的,需要输入两个参数:登录邮箱和授权
(7)第六行代码sendmail是“发送邮件”的意思,是发送邮件用的,sendmail()方法需要三个参数:发件人,收件人和邮件内容
server.sendmail(from_addr, to_addr, msg.as_string())
from_addr:邮件发送地址,就是上面的username
to_addr:邮件收件人地址
msg.as_string():为一个字符串类型
(8)最后一行代码,quit是“退出”的意思,就是退出服务器

# smtplib 用于邮件的发信动作
import smtplib

# 发信方的信息:发信邮箱,QQ邮箱授权码
from_addr = 'xxx@qq.com'
password = '你的授权码数字'

# 收信方邮箱
to_addr = 'xxx@qq.com'

# 发信服务器
smtp_server = 'smtp.qq.com'

# 开启发信服务,这里使用的是加密传输
server = smtplib.SMTP_SSL()
server.connect(smtp_server,465)
# 登录发信邮箱
server.login(from_addr, password)
# 发送邮件
server.sendmail(from_addr, to_addr, msg.as_string())
# 关闭服务器
server.quit()

2. eamil模块

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

MIMEText()方法需要输入三个参数:文本内容,文本类型和文本编码 MIMEText(msg,type,chartset) msg:文本内容,可自定义 type:文本类型,默认为plain(纯文本) chartset:文本编码,中文为“utf-8”

3.梳理发邮件的代码结构

1、导入模块:

smtplib 用于邮件的发信动作

import smtplib
from email.mime.text import MIMEText

email 用于构建邮件内容

2|定义变量:

发信方的信息:发信邮箱,QQ 邮箱授权码

from_addr = 'xxx@qq.com'
password = '你的授权码数字'

收信方邮箱

to_addr = 'xxx@qq.com'

发信服务器

smtp_server = 'smtp.qq.com'

邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码

msg = MIMEText('send by python','plain','utf-8')

3、使用方法:

开启发信服务,这里使用的是加密传输

server = smtplib.SMTP_SSL()
server.connect(smtp_server,465)

登录发信邮箱

server.login(from_addr, password)

发送邮件

server.sendmail(from_addr, to_addr, msg.as_string())

关闭服务器

server.quit()