Skip to content

yagmail——快速发送邮件

利用 python 中的 yagmail 包,快速发送邮件

python写的一个简单demo脚本代码如下:

python
import yagmail
import pandas as pd
from loguru import logger
 
# 保存excel文件
contents = pd.DataFrame()
contents["name"] = ["张三", "李四"]
contents["age"] = [13, 14]
writer = pd.ExcelWriter("output.xlsx")
contents.to_excel(writer, sheet_name="demo", index=False)
writer.save()
 
# 邮件发送
yagmail_server = yagmail.SMTP(user="xxxxxxx@qq.com", password="yyyyyyyy", host="smtp.qq.com")
email_name = ["xxxxxxxx@qq.com"]
email_title = ["demo"]
email_content = ["你好"]
email_attachment = ["output.xlsx"]
yagmail_server.send(to=email_name, subject=email_title, contents=email_content, attachments=email_attachment)
yagmail_server.close()
logger.info("邮件发送完毕!")

说明,邮件发送需要准备以下几个内容:

  • 发送人的账号(如xxxxxxxx@qq.com)、授权码(如yyyyyyyyyy),服务器host(如qq邮箱的smtp.qq.com)
  • 收件人账号
  • 邮件标题(可不要)
  • 邮件内容(可不要)
  • 邮件附件(可不要,提供附件的路径即可) 说明:
  1. 发送人的授权码如何获取?以QQ邮件为例(其他邮箱类似)

【qq邮箱——设置——账户——POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务——IMAP/SMTP服务——开启】

  1. 公共邮箱:添加端口号与smtp的属性即可(详细请百度解决)。

*** 发送后的效果如下: ***

yagmail_01

运行结果:

python
2020-08-30 00:29:23.542 | INFO     | __main__:<module>:36 - 邮件发送完毕!

附件output.xlsx内容如下:

yagmail_02

如果想定时发送怎么设置呢?

python
from apscheduler.schedulers.blocking import BlockingScheduler
scheduler = BlockingScheduler(timezone="Asia/Shanghai")  # 时区
@scheduler.scheduled_job("cron", day_of_week="*", hour="14", minute="05")
函数体

参考链接

参考链接