欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python实现邮件多人自动发送

程序员文章站 2022-07-08 10:10:55
...

python实现邮件多人自动发送

首先梳理任务需求,实现发送邮件的功能,代码中用到的是俩个方向,一个是email模块,一个是smtp模块,模块类型需要做一下区分。
smtp模块负责服务器的收发,email负责编写内容

抄一遍定义:SMTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。可以很简单地通过telnet程序来测试一个SMTP服务器。SMTP使用TCP端口25。要为一个给定的域名决定一个SMTP服务器,需要使用MX
(Mail eXchange) DNS。

具体内容https://baike.baidu.com/item/SMTP/175887?fr=aladdin
说人话就是服务器端
当然email就是客户端,用户使用界面

那么发邮件需要那些步骤?我们打开qq邮箱,看一看~
python实现邮件多人自动发送
写邮件分为收件人,主题,还有内容,当然你还有你自己的邮箱也就是发件人,然后你的密码登陆,还有一个发邮件使用的平台服务器,这些东西加到一起才能完善一个邮件系统
收件人,主题,内容,发件人都还好,密码登陆可不是你平时的qq密码,这个东西叫smtp安全码,需要你打开的
python实现邮件多人自动发送
获取步骤大概是这样的,然后你获取到的一堆长长的字母,大概这样:dasdsadsadaddgsegegdsvs 我随便打的~
获取到了后我们就完成获取了我们所需要的资源

开始代码

from email.mime.text import MIMEText
# email 用于构建邮件内容,需要获取这个
from email.header import Header
#构建邮件头,这个就是主题
import smtplib
# smtplib 用于邮件的发信动作,就是使用服务器

因为密码账号是有隐私的,所以还是用input比较恰当

# 发信方的信息:发信邮箱,QQ邮箱授权码
from_addr = input('请输入登陆邮箱:\n')
password = input('请输入邮箱授权码:\n')
# 发信服务器
smtp_server = 'smtp.qq.com'

接下来考虑到是自动群发功能,所以我们要不停的邮箱地址,直到你已经不需再次输入内容,我的写法是这样:

to_addrs =[]
while True:
    a = input('请输入收件邮箱:\n')
    to_addrs.append(a)
    b = input('是否继续输入,n退出,任意键继续:')
    if b == 'n':
        break

接下来就是写邮件内容了

# 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码
text = '''测试,python发送邮箱'''
msg = MIMEText(text,'plain','utf-8')
# 邮件头信息,主题写法
msg['From'] = Header(from_addr)
msg['To'] = Header(",".join(to_addrs)) 
msg['Subject'] = Header('python test')
# 开启发信服务,这里使用的是加密传输
server = smtplib.SMTP_SSL(smtp_server)
server.connect(smtp_server,465)

这里要强调一下,465一般是qq使用的smtp端口,默认的话是25

# 登录发信邮箱
server.login(from_addr,password)
# 发送邮件
try:
    server.sendmail(from_addr,to_addrs,msg.as_string())
    print('恭喜,发送成功')
except:
    print('发送失败,请重试')
# 关闭服务器
server.quit()

最后一步关闭服务器,至此就完成了一个发送邮件的代码过程,当然还有增加发送图片,内容功能,之后会更新