Python案例笔记 | 用python群发邮件

本文介绍了如何使用Python的smtplib和email模块发送邮件,详细解析了SMTP协议和邮件构建过程。内容包括连接SMTP服务器、登录、发送邮件的步骤,以及如何构建邮件头和内容。还探讨了群发邮件的多种方式,包括列表、用户输入和CSV文件读取。最后,提供了完整代码示例和异常处理建议。
摘要由CSDN通过智能技术生成

基于Python3版本的学习。
学习知识来源:风变编程

要用python群发邮件,需用到两个python的内置模块。

smtplib模块 是用来发送邮件用的。

email模块 是用来构建邮件内容的。


smtplib模块

官网教程:https://docs.python.org/3/library/smtplib.html

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

python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。

Python创建 SMTP 对象语法如下:

import smtplib

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

参数说明:
host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名,这个是可选参数。
port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下 SMTP 端口号为25。
local_hostname: 如果 SMTP 在你的本机上,你只需要指定服务器地址为 localhost 即可。

Python SMTP 对象使用 sendmail 方法发送邮件,语法如下:

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])

参数说明:
from_addr: 邮件发送者地址。
to_addrs: 字符串列表,邮件发送地址。
msg: 发送消息

这里要注意一下第三个参数,msg 是字符串,表示邮件。我们知道邮件一般由标题,发信人,收件人,邮件内容,附件等构成,发送邮件的时候,要注意 msg 的格式。这个格式就是 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模块
第三行: SMTP 是一个类(class),要想调用 smtplib 模块下、SMTP 类下的方法,应该这样写:smtplib.SMTP.方法。

SMTP 协议是由源服务器到目的地服务器传送邮件的一组规则。
可以简单理解为:我们需要通过SMTP指定一个服务器,这样才能把邮件送到另一个服务器。

第四行: 连接(connect)指定的服务器。
host是指定连接的邮箱服务器,你可以指定服务器的域名。
port 是“端口”的意思。一般情况下SMTP默认端口号为25

以QQ邮箱为例
SMTP服务器地址是:smtp.qq.com
端口是:465或587

有两种写法:
第一种是使用默认端口:25。

import smtplib

server = smtplib.SMTP()
server.connect('smtp.qq.com', 25)

第二种是其他端口,比如465。
由于QQ邮箱采用的加密方式是SSL,我们需要写成这样:

import smtplib

server = smtplib.SMTP_SSL()
#如果端口是用SSL加密,请这样写代码。其中server是变量名
server.connect('smtp.qq.com', 465)
#如果出现编码错误UnicodeDecodeError,你可以这样写:server.connect('smtp.qq.com', 465,'utf-8')

提醒:QQ邮箱的 POP3/SMTP服务 一般默认关闭SMTP服务,我们得先去开启它。
如果你打算用QQ邮箱自动发邮件,请保存好这个授权码。在你使用SMTP服务登录邮箱时,要输入这个授权码作为密码登录

第五行: login是登录的意思,也就是登录你指定的服务

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值