邮件批量发送

主要依赖yagmail库进行邮件的批量发送,样例脚本如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#殷天润制作
#使用说明:在批好的作业的文件夹下面: python py_email.py即可
## 记得改一下subject 和 passwd

import yagmail
import os
def get_id(filename):
for index in range(0,len(filename)-1):
if filename[index]=='1' or filename[index]=='2':
print(filename[index:index+9])
return filename[index:index+9]
elif filename[index]=='M' or filename[index]=='D' or filename[index]=='m' or filename[index]=='d':
print(filename[index:index+10])
return filename[index:index+10]



user='mg21330xxx@smail.nju.edu.cn'
passwd="passwd"
smtp_host="smtp.exmail.qq.com"
mail=yagmail.SMTP(user=user,password=passwd,host=smtp_host,port=465)
path="./"
filelist=os.listdir(path)
# 遍历输出每一个文件的名字和类型
for item in filelist:
# 输出指定后缀类型的文件
if(item.endswith('.pdf')):
file=item
uid=get_id(item)
uid_email=uid+"@smail.nju.edu.cn"
#print(uid_email)
print(uid_email)
mail.send(to=[uid_email],subject='计算机网络作业批改_xxx', contents='批改见附件', attachments=[file] )
## 记得改一下subject

邮件附件批量下载

主要参考了https://club.excelhome.net/thread-563004-1-1.html
https://blog.csdn.net/qq_35132089/article/details/115509617

主要是借助VBA以及outlook;

流程如下:

在outlook的收件箱新建文件夹,命名为:homework;

homework
homework

然后把要处理的邮件批量放进去,这一步可以现在腾讯企业邮箱批量的把邮件移动到某文件夹然后再放进去;

然后在D盘创建文件夹,比如名字为temp;

然后对outlook进行信任部分的设置,具体操作是打开选项:

trust setting1
trust setting1

然后信任中心,信任中心设置,启用所有宏:

trust setting2
trust setting2

最后打开outlook,按住alt+f11,调出VBA编辑的页面,填入如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub Savetheattachment()     
Dim olApp As New Outlook.Application
Dim nmsName As Outlook.NameSpace
Dim vItem As Object
Set nmsName = olApp.GetNamespace("MAPI")
Set myFolder = nmsName.GetDefaultFolder(olFolderInbox)
Set fldFolder = myFolder.Folders("homework")
For Each vItem In fldFolder.Items
'-----Save Attachment------
For Each att In vItem.Attachments
att.SaveAsFile "D:\temp\" & att.FileName
Next
'------Save Attachment-------
Next
Set fldFolder = Nothing
Set nmsName = Nothing
End Sub
running VBA
running VBA

然后如图示点击运行即可