python模块学习(二)

发送邮件


smtplib模块 

本章节尝试使用python发送邮件,学会百度,第一件事自然是百度

不用逐一点进去看就能知道:1.Python可以解决这个问题;2.方法是smtplibemail这两个模块

而且还会知道:smtplib是用来发送邮件用的,email是用来构建邮件内容的。这两个都是Python内置模块

关于smtplib模块

需要向smtplib模块输入什么;smtplib模块能做什么;smtplib模块返回的是什么;常见的报错;SMTP对象有哪些方法及如何使用;一个应用实例

但是这是官方文档翻译,讲真并不友好,我们还是直接百度这个模块的教程比较好

总结一下这些内容,如果我们要发送邮件,就需要用到smtplib模块的以下方法

import smtplib

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

解释一下如上代码

  • 导入smtplib模块
  • 实例化smtplib模块下的SMTP类
  • 连接服务器(主机地址,端口)
  • 登陆服务器(用户名,授权码)
  • 通过sendmail发送邮件,sender和username时一样的,to_addr时目标邮箱,后面时发送的内容
  • 最后再退出

授权码是个什么鬼?

特别注意授权码不是密码

提醒!QQ 邮箱一般默认关闭SMTP服务,我们得先去开启它。请打开https://mail.qq.com/,登录你的邮箱

然后点击位于顶部的【设置】按钮,选择【账户设置】,然后下拉到这个位置

就像上面的一样,把第一项服务打开。需要用密保手机发送短信,完成之后,QQ 邮箱会提供给你一个授权码

授权码的意思是,你可以不用QQ的网页邮箱或者邮箱客户端来登录,而是用邮箱账号+授权码获取邮箱服务器的内容

尝试搜索到的端口,比如465。这时会有些不同,QQ 邮箱采用的加密方式是SSL,我们需要写成这样

server = smtplib.SMTP_SSL()
#如果端口是用SSL加密,请这样写代码。其中server是变量名

此部分代码如下

# 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()

email 模块

用来写邮件内容的模块。这个内容可以是纯文本、HTML内容、图片、附件等多种形式

这个模块我们不需要像smtplib一样全部导入,如下

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”

导入文件头信息

from email.header import Header

msg['From'] = Header('xxx')
msg['To'] = Header('xxx')
msg['Subject'] = Header('xxx')

接下来我们就可以写信息了,先梳理一下

  • 首先导入smtplib和email模块
  • 定义变量,包括发件人、收件人、授权码、服务器、发送内容
  • 嘴脸连接、登录、发送、退出
# smtplib 用于邮件的发信动作
import smtplib
from email.mime.text import MIMEText
# email 用于构建邮件内容
from email.header import Header
# 用于构建邮件头

# 发信方的信息:发信邮箱,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')

# 邮件头信息
msg['From'] = Header(from_addr)
msg['To'] = Header(to_addr)
msg['Subject'] = Header('python test')

# 开启发信服务,这里使用的是加密传输
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()

其实还可以做到群发,知道吧收件人修改成多个就可以了

to_addrs = ['test666@qq.com','test123@qq.com']

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值