yagmail——快速发送邮件
目标:如何利用python中的yagmail包,快速发送邮件。
python写的一个简单demo脚本代码如下:
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服务——开启】
2. 公共邮箱:添加端口号与smtp的属性即可(详细请百度解决)。
发送后的效果如下:
运行结果:
2020-08-30 00:29:23.542 | INFO | __main__:<module>:36 - 邮件发送完毕!
附件output.xlsx内容如下:
如果想定时发送怎么设置呢?
from apscheduler.schedulers.blocking import BlockingScheduler
scheduler = BlockingScheduler(timezone="Asia/Shanghai") # 时区
@scheduler.scheduled_job("cron", day_of_week="*", hour="14", minute="05")
函数体