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 = 'xxx@qq.com'
password = '你的授权码数字'

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

# 发信服务器
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也连带产生了问题
有问题可以讨论哦
实在太困了,偷点懒~
晚安

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现Python代码实现邮件发工资条,你可以使用Python的smtplib和email库来发送邮件。下面是一个简单的示例代码: ```python import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText # 邮件服务器的配置信息 smtp_server = "smtp.example.com" smtp_port = 587 smtp_username = "your_username" smtp_password = "your_password" # 发件人和收件人信息 sender = "sender@example.com" recipients = ["recipient1@example.com", "recipient2@example.com"] # 邮件内容 subject = "工资条" body = "附件中是本月的工资条,请查收。" # 创建邮件对象 msg = MIMEMultipart() msg["From"] = sender msg["To"] = ", ".join(recipients) msg["Subject"] = subject # 添加邮件正文 msg.attach(MIMEText(body, "plain")) # 添加附件 attachment_path = "path_to_attachment.pdf" with open(attachment_path, "rb") as attachment: part = MIMEBase("application", "octet-stream") part.set_payload(attachment.read()) part.add_header("Content-Disposition", f"attachment; filename= {attachment_path}") msg.attach(part) # 发送邮件 with smtplib.SMTP(smtp_server, smtp_port) as server: server.starttls() server.login(smtp_username, smtp_password) server.send_message(msg) print("邮件发送成功!") ``` 请注意,你需要将代码中的以下信息替换为你自己的信息: - 邮件服务器的配置信息(smtp_server、smtp_port、smtp_username、smtp_password) - 发件人和收件人信息(sender、recipients) - 邮件内容(subject、body) - 附件路径(attachment_path) 这是一个简单的示例,你可以根据自己的需求进行修改和扩展。例如,你可以使用循环来发送多个工资条附件,或者从文件中读取收件人列表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值