导入必要代码库
|
|
定义函数
主要功能包括发送普通邮件、抄送邮件和密送邮件。
邮件正文中可添加文字(标题、段落)、表格和图片。
可添加邮件附件。
具体限制根据不同的邮箱服务器而有所不同,最好在正式邮件发送前多进行测试。
调用函数时需要的参数信息:
函数定义如下:
不同邮件系统所需的设置会有所不同,例如:
- 要用腾讯企业邮箱作为发送邮箱时,使用以下两句代码:12smtp = smtplib.SMTP()smtp.connect(smtp_server, smtp_port)
把smtp_server
填充成smtp.exmail.qq.com
,smtp_port
保持默认的0
,password
也填写邮箱的登录密码即可。
- 而要使用QQ邮箱作为发送邮箱时,就需要把上面两句代码改写为1smtp = smtplib.SMTP_SSL(smtp_server, smtp_port)
且需要提前在QQ邮箱中设置
->账户
中开启SMTP服务,并生成“授权码”,并在password
处填写授权码。
此外,还需要把smtp_server
填充为‘smtp.qq.com'
,smtp_port
填写为465
。
设置部分截图如下:
函数调用 & html styles 应用
.py
文件与muban
文件夹平级,以下.html
模板文件都存在muban
文件夹下。
一般运行代码时可选择相对路径引用,如下所示。不过碰到在docker中运行时只能用绝对路径的情况。
|
|
插入文字
如果不需要任何格式修饰,可以直接往
html_text
输入长的Python
string
。如果邮件的正文中有部分固定文字的格式,还有一部分内容可以由使用函数的用户自定义变量的值来进行填充,可以使用以下方式。
在header.html
中写入如下内容:
然后运行以下代码,就可把date_str
和author
的值填充进邮件正文中了。
|
|
插入表格
把以下表格styles代码存入文件table_template.html
中。
|
|
然后在main_body_template.html
中输入以下代码:
将需要发送在邮件内容中的pandas.DataFrame
存在input_df
变量中,则应用以上模板的方法如下:
|
|
|
|
再在以上函数中引入如下styles:
|
|
应用在如下pd.DataFrame
上,可得到下面的显示效果(不同邮箱系统可能会存在差异)。
|
|
产品 | 销量 | |
---|---|---|
0 | A | 100 |
1 | B | 200 |
2 | C | 300 |
3 | D | 200 |
插入图片
将生成好的图片保存在代码同级或以下的路径中,然后将cid
和图片文件名一一对应,如下所示。
|
|
注意:若图片数量大于等于10张,需要将cid
编号左边填充0
,否则,cid
排序不正确会导致图片显示顺序出错。
如果有10张图片,而cid
直接从1
到10
,则cid
为10
的图片会显示在1
的后面、2
的前面。
添加附件
将附件文件存放在代码路径或以下,后将文件路径填写在attachments
下。
定时任务设置
|
|