python小白之实现群发邮件

                     2020年10月2日

前两天看到kk的公众号推送
有一句话特别醒目
努力是最不值得拿来夸口的东西,因为这是最基本的
以前考研的时候所有驱动力都是kk的推送
后来有了内在驱动力
很少点开kk的推送了
最好的摆渡人的结局

今天发生了一件超级有趣的事情
人生中第一次遇见跟我同名的人,
在某大的群里
哪怕姓不一样,性别也不一样,真的很少见
我说好像和您同名
他说,我的荣幸
我回:荣幸之至
然后有了对方的添加信息
“我是***,CSE PhD student,请多指教”
我们互聊了当下最顶的教授,然后也帮忙推荐了他的博导
互约了有机会回去,一起去hiking.
嗯,在某大,真的会很放心的毫防备的和大家聊,约户外活动,因为大家一心学术,品德纯良,尊重女性,谦逊自信,根本没有所谓的目的性

今天要学习的群发邮件,主要需要学习两个模块
方法是smtplib,email这两个模块
其中:smtplib是用来发送邮件用的,email是用来构建邮件内容的,这两个都是Python内置模块
第一行,我们懂,是引入smtplib模块。第三行,server是一个变量,smtplib.SMTP()是变量server的值。我们已经知道了smtplib是模块的名称,那SMTP是什么意思呢?
请你先在自己电脑的VS Code上新建一个.py文件。注意:这个.py文件不能命名为email.py,而且你存放这个py文件的文件夹里,也不能email.py。这是由于我们后面要调用email模块,如果将文件也命名为email,会造成报错。

import smtplib

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

SMTP (Simple Mail Transfer Protocol)翻译过来是“简单邮件传输协议”的意思,SMTP 协议是由源服务器到目的地服务器传送邮件的一组规则。可以简单理解为:我们需要通过SMTP指定一个服务器,这样才能把邮件送到另一个服务器。

import smtplib

server = smtplib.SMTP()
server.connect(host, port)

第四行代码,就是干这个工作的,连接(connect)指定的服务器。host是指定连接的邮箱服务器,你可以指定服务器的域名。通过搜索“xx邮箱服务器地址”,就可以找到。port 是“端口”的意思。端口属于计算机网络知识里的内容,你可以自行搜索了解,现在我们只要知道它是一个【整数】即可。我们需要指定SMTP服务使用的端口号,一般情况下SMTP默认端口号为25

import smtplib

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

第五行代码,login是登录的意思,也就是登录你指定的服务器用的,需要输入两个参数:登录邮箱和授权码
第六行代码sendmail是“发送邮件”的意思,是发送邮件用的,sendmail()方法需要三个参数:发件人,收件人和邮件内容。这里的发件人from_addr与上面的username是一样的,都是你的登录邮箱,所以只用设置一次。
msg.as_string()是一个字符串类型:as_string()是将发送的信息msg变为字符串类型。
以QQ邮箱为例:

# 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.login(smtp_server,465)
# 登录发信邮箱
server.login(from_addr, password)
# 发送邮件
server.sendmail(from_addr, to_addr, msg.as_string())
# 关闭服务器
server.quit()

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

from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
# smtplib 用于邮件的发信动作
import smtplib
from email.mime.text import MIMEText
# email 用于构建邮件内容

# 发信方的信息:发信邮箱,QQ 邮箱授权码
from_addr = '[email protected]'
password = '你的授权码数字'

# 收信方邮箱
to_addr = '[email protected]'

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

# 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码
msg = MIMEText('send by python','plain','utf-8')

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

如果你的Python版本是3.7,很可能发生这种报错。因为Python 3.7修改了ssl.py,导致smtplib.SMTP_SSL也连带产生了问题
有问题可以讨论哦
实在太困了,偷点懒~
晚安

猜你喜欢

转载自blog.csdn.net/m0_48787202/article/details/108903699