# -*- coding:utf-8 -*-import email
import smtplib
import os
import sys
import time
import shutil
from email.mime.text import MIMEText
from email.header import Header
import imp'''
批量发邮件 5.0
CN
;运行系统Windows
;运行程序Python+pycharm
;适配环境内网测试批量发信所用的框架库,确保自己安装的pycharm装有第三方支持库:email、smtplib、os、time、shutil。
运行脚本的 rootdir 指定发送样本库,确保样本库中全是eml文件,不能有文件夹、txt文件、ffs_db文件等。
运行环境确保发送服务器和接收服务器连通正常,配置完整,因为脚本针对的是内网服务器批量发信测试,所以运行环境确保网络的正常。
eml文件乱码问题,部分文件有可能会出现 from、to、正文、附件名的乱码问题,需要更换,代码中没有针对名称乱码的解决方案行注意事项:
读取文件源码操作:根据实况而定,一般情况下eml文件定义统一,代码在运行时,若出现文件乱码,或者报错,请查看该eml文件的from、to、正文、附件、和源码(是否有:Content-Type: text/plain; charset=utf-8)
判断附件操作:附件可以根据自己的需求是否读取分析,一般情况下不建议读取附件,防止发送结果有影响,仅读取附件名称即可。
时间操作:时间获取分别有两种方式,可以根据自己的喜好而定。第一是大概时间,精确到日 timed = time.strftime('%Y.%m.%d',time.localtime(time.time()))  (2021.03.15)第二是完整标准时间,精确到秒 timed = time.asctime(time.localtime(time.time()))   (Mon Mar 15 10:56:07 2021)
定位from和to: receive 是接收端的 用户名@域名,其他的是发送端用户名,密码、IP
判断 charset字符串:eml文件编码格式和解析编码格式相同,以防发送的时候出现乱码现象,目前仅针对gbk特殊标注,若出现文件乱码,或者报错,请查看该eml文件的from、to、正文、附件、和源码(是否有:Content-Type: text/plain; charset=utf-8)
发送邮件成功备份操作:发送成功的eml邮件需要 copy 到自定义的绝对目录中,目录需要自己定义( ok_eml ),因为,如果出现代码error,或者乱码现象,需要在eml文件夹里替换掉问题邮件,然后运行 4_Remove_Emlfile.py(删除文件),将备份目录文件保存,删除eml文件夹发送成功的文件,结束后再重新运行批量发送邮件脚本字符集统计:"gbk"、"GBK"、"gb2312"、"GB2312"、"iso-8859-1"、"gib5"、"GIB5"、"us-ascii"、"utf-8"、"UTF-8"、"ascii"、"ASCII"gbk、GBK、gb2312、GB2312、iso-8859-1、gib5、GIB5、us-ascii、utf-8、UTF-8、ascii、ASCII版本更新:5.01、兼容了Python32、重置了代码规制3、增加了ASCII编码格式4、增加了 AttributeError 异常捕获5、增加了文件保存形式的编码查询(通过将原文保存至指定文件,然后查询文件内的编码格式,按照非1跳2的形式''''''遍历搜索查找文件内子父目录的文件'''
def getAllMail(rootdir, dirlist=[], filelist=[]):lists = os.listdir(rootdir)for filename in lists:file_name = os.path.join(rootdir, filename)if os.path.isdir(file_name):dirlist.append(file_name)getAllMail(rootdir, dirlist, filelist)if os.path.isfile(file_name):filelist.append(file_name)return dirlist, filelist'''最后方案的字符集指定'''
def the_final_solution(file_names , w_character, r_character, msg):character_test = []  # 主要针对字符集的提取做列表character_test_txt = ""  # # 主要针对字符集的提取做唯一保存# 将文件存入指定文件内eml_character = str(msg)w_character.writelines(eml_character)# reload(sys)imp.reload(sys)# sys.setdefaultencoding('utf8')sample = r_character.readlines()for line in sample:line = line.strip()if 'charset' in line:print("line:  ", line)try:lines = line.split("=")[1]except IndexError:print("\033[43m 下标越界异常,请检查该文件原件内容是否符合操作")print(file_names , "\033[0m")continueprint("line:  ", line)character_test.append(lines)# print(character_test)print(character_test[0])character_test_txt = character_test[0]return character_test_txtif __name__ in '__main__':rootdir = "eml_dir"  # 需要发送的eml 文件存放目录abc = "dir"  # 预留存放 eml 文件解析目录ok_eml = "eml_ok_dir"  # 发送成功的 eml 文件目录w_character = open("写入的临时文件", "w")r_character = open("读取的临时文件", "r")x = 0   # 第一字符集累加y = 0   # 第二字符集累加z = 0   # 最后字符集累加c = 0c_txt = []   # # 解析到乱码内容的邮件d = 0   # 没有字符集或者是不能解析字符集的邮件累加d_txt = []   # 没有字符集或者是不能解析字符集的邮件e = 0   # 主要针对的是严重的邮件解析异常的累加e_txt = []   # 主要针对的是严重的邮件解析异常g = 0   #针对不能识别到编码格式的邮件累加g_txt = []  #针对不能识别到编码格式的邮件error_eml = 0   # 针对最后的字符集,选择跳出error_eml_txt = []attError = []  # 针对附件文件提取时格式的问题或是提取失败做捕获Dirlist, Filelist = getAllMail(rootdir)for i in range(len(Filelist)):print("文件路径::  ", Filelist[i])paths = Filelist[i]if os.path.isfile(paths):# 读取文件源码操作:eml_txt = paths.split('\\')[::-1]  # 切变操作eml_name = eml_txt[0]print("eml文件名::  ", eml_name)new_dir = ok_eml + eml_namefp = open(paths, "r")try:msg = email.message_from_file(fp)except UnicodeDecodeError:print("\033[31m \n codec can't decode byte 0xf3 in position 16: ordinal not in range(128)\n邮件中包含乱码,跳出继续》》》》》》》》》》》》\033[0m")c = c + 1c_txt.append(eml_name)continuesubject = msg.get("subject")content_type = msg.get("Content-Type")print("content_type::  ", content_type)# content_types = content_type.rsplit("=", 1)[::-1][0]try:content_types = content_type.rsplit("=", 1)[::-1][0]except AttributeError:print("\033[31m \n'NoneType' object has no attribute 'rsplit'\n不能解析字符集或者没有字符集标识,跳出继续》》》》》》》》》》》》》》》》\033[0m")d = d + 1d_txt.append(eml_name)continue# h = email.Header.Header(subject)try:# h = email.Header.Header(subject)h = email.header.Header(subject)except UnicodeDecodeError:print("\033[31m \n'ascii' codec can't decode byte 0xf3 in position 16: ordinal not in range(128)\n邮件中包含乱码,跳出继续》》》》》》》》》》》》\033[0m")c = c + 1c_txt.append(eml_name)continue# dh = email.Header.decode_header(h)try:# dh = email.Header.decode_header(h)dh = email.header.decode_header(h)except email.errors.HeaderParseError:print("\033[31m 严重的邮件异常(email.errors.HeaderParseError),已经记录\n\t\tpython的base64的编码和本邮件的字符集出现冲突或者是无法解析报错!!! \033[0m")e = e + 1e_txt.append(eml_name)continuetry:subject = dh[0][0]except IndexError:print("\033[31m 针对不能识别到编码格式的邮件,已经记录\n\t\t  \033[0m")g = g + 1g_txt.append(eml_name)continue# print("subject::  ", subject)print("字符集:1:  ", content_types)# 第二个解决方案content_types_2 = the_final_solution(eml_name , w_character , r_character , msg)print("字符集:2:  ", content_types_2)print('='*10)content_types_2 = the_final_solution(eml_name , w_character , r_character , msg)print("字符集:2:  ", content_types_2)from_name = email.utils.parseaddr(msg.get("from"))[1]# print"from: ", email.utils.parseaddr(msg.get("from"))[1] #  取from)to_name = email.utils.parseaddr(msg.get("to"))[1]# print"to: ", email.utils.parseaddr(msg.get("to"))[1] # 取to)# 判断附件操作:for par in msg.walk():if not par.is_multipart():name = par.get_param("name")if name:# h = email.Header.Header(name)try:h = email.header.Header(name)except UnicodeDecodeError:print("\033[31m\n'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)\n解析邮件内容出现乱码情况,跳出继续》》》》》》》》》》》》》》》》\033[0m")c = c + 1c_txt.append(eml_name)continueexcept AttributeError:print("\033[31m \n AttributeError: 'tuple' object has no attribute 'decode'   解析过程中提取附件为空,格式有误提取失败")attError.append(eml_name + " ***  'tuple' object has no attribute 'decode'")continuedh = email.header.decode_header(h)fname = dh[0][0]# print('附件名::  ', fname)data = par.get_payload(decode=True)try:f = open(fname, 'wb')  # 注意一定要用wb来打开文件,因为附件一般都是二进制文件print("fname::  ", fname)except:f = open('zzzzzzzz', 'wb')f.write(data)f.close()#         else:#             print# 时间操作:timed = time.asctime(time.localtime(time.time()))# timed = time.strftime('%Y.%m.%d',time.localtime(time.time()))# a = a + 1# print('+' * 30 , a , '+' * 30)# def send():# 定位from和tosmtpserver = '发信IP地址'user = '发信用户@域名'password = 'eyouadmin'sender = '发信用户@域名'receive = '收信用户@域名'subject = eml_name + " *** " + timedcontent = par.get_payload(decode=True)# 判断文件是否存在if not os.path.exists(ok_eml):os.mkdir(ok_eml)# 判断 charset字符串:if content_types == "gbk" or content_types == "GBK" or content_types == "\"gbk\"" or content_types == "\"GBK\"":print("start  \n\t\t\t >>  第一次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'gbk')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types == "gb2312" or content_types == "GB2312" or content_types == "\"GB2312\"":print("start  \n\t\t\t >>  第一次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'gb2312')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types == "iso-8859-1" or content_types == "\"iso-8859-1\"":print("start  \n\t\t\t >>  第一次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'iso-8859-1')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types == "gib5" or content_types == "GIB5" or content_types == "\"gib5\"" or content_types == "\"GIB5\"":print("start  \n\t\t\t >>  第一次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'gib5')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types == "us-ascii" or content_types == "\"us-ascii\"":print("start  \n\t\t\t >>  第一次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'us-ascii')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types == "utf-8" or content_types == "UTF-8" or content_types == "\"utf-8\"" or content_types == "\"UTF-8\"" or content_types == "utf8" or content_types == "UTF8" or content_types == "\"utf8\"" or content_types == "\"UTF8\"":print("start  \n\t\t\t >>  第一次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'utf-8')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types == "ascii" or content_types == "ASCII" or content_types == "\"ascii\"" or content_types == "\"ASCII\"":print("start  \n\t\t\t >>  第一次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'ascii')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types_2 == "gbk" or content_types_2 == "GBK" or content_types_2 == "\"gbk\"" or content_types_2 == "\"GBK\"":print("start  \n\t\t\t >>  第二次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'gbk')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types_2 == "gb2312" or content_types_2 == "GB2312" or content_types_2 == "\"GB2312\"":print("start  \n\t\t\t >>  第二次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'gb2312')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types_2 == "iso-8859-1" or content_types_2 == "\"iso-8859-1\"":print("start  \n\t\t\t >>  第二次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'iso-8859-1')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types_2 == "gib5" or content_types_2 == "GIB5" or content_types_2 == "\"gib5\"" or content_types_2 == "\"GIB5\"":print("start  \n\t\t\t >>  第二次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'iso-8859-1')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types_2 == "us-ascii" or content_types_2 == "\"us-ascii\"":print("start  \n\t\t\t >>  第二次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'us-ascii')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types_2 == "utf-8" or content_types_2 == "UTF-8" or content_types_2 == "\"utf-8\"" or content_types_2 == "\"UTF-8\"" or content_types_2 == "utf8" or content_types_2 == "UTF8" or content_types_2 == "\"utf8\"" or content_types_2 == "\"UTF8\"":print("start  \n\t\t\t >>  第二次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'utf-8')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types_2 == "ascii" or content_types_2 == "ASCII" or content_types_2 == "\"ascii\"" or content_types_2 == "\"ASCII\"":print("start  \n\t\t\t >>  第二次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'ascii')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)else:print("start  \n\t\t\t >>  最后定位字符集不能通过: ERROR <<")error_eml = error_eml + 1error_eml_txt.append(eml_name)print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n\n")continue"""# msg = MIMEText(content, 'html', "gbk")# msg['Subject'] = Header(subject, 'gbk')# msg['From'] = '发信用户@域名t'# msg['To'] = '发信用户@域名t'# smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口# smtp.ehlo(smtpserver)# smtp.login(user, password)# smtp.sendmail(sender, receive, msg.as_string())# smtp.quit()# content_txt = abc + eml_name[0] + ".txt"# print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)s# print("eml文件原路径:", paths)# print("发送成功eml:", ok_eml + eml_txt[0])# shutil.copyfile(paths, new_dir)# time.sleep(1)# z = z + 1# print("\033[7m",'+' * 20 , "end" , '+' * 20 , x+y+z , '+' * 20 , "\033[0m")# time.sleep(1)已结束此部分运行"""else:print("在",ok_eml.rsplit("\\",2)[0],"中已有",ok_eml.rsplit("\\",2)[1],"文件")if content_types == "gbk" or content_types == "GBK" or content_types == "\"gbk\"" or content_types == "\"GBK\"":print("start  \n\t\t\t >>  第一次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'gbk')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types == "gb2312" or content_types == "GB2312" or content_types == "\"GB2312\"":print("start  \n\t\t\t >>  第一次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'gb2312')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types == "iso-8859-1" or content_types == "\"iso-8859-1\"":print("start  \n\t\t\t >>  第一次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'iso-8859-1')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types == "gib5" or content_types == "GIB5" or content_types == "\"gib5\"" or content_types == "\"GIB5\"":print("start  \n\t\t\t >>  第一次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'gib5')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types == "us-ascii" or content_types == "\"us-ascii\"":print("start  \n\t\t\t >>  第一次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'us-ascii')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types == "utf-8" or content_types == "UTF-8" or content_types == "\"utf-8\"" or content_types == "\"UTF-8\"" or content_types == "utf8" or content_types == "UTF8" or content_types == "\"utf8\"" or content_types == "\"UTF8\"":print("start  \n\t\t\t >>  第一次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'utf-8')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types == "ascii" or content_types == "ASCII" or content_types == "\"ascii\"" or content_types == "\"ASCII\"":print("start  \n\t\t\t >>  第一次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'ascii')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types_2 == "gbk" or content_types_2 == "GBK" or content_types_2 == "\"gbk\"" or content_types_2 == "\"GBK\"":print("start  \n\t\t\t >>  第二次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'gbk')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types_2 == "gb2312" or content_types_2 == "GB2312" or content_types_2 == "\"GB2312\"":print("start  \n\t\t\t >>  第二次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'gb2312')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types_2 == "iso-8859-1" or content_types_2 == "\"iso-8859-1\"":print("start  \n\t\t\t >>  第二次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'iso-8859-1')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types_2 == "gib5" or content_types_2 == "GIB5" or content_types_2 == "\"gib5\"" or content_types_2 == "\"GIB5\"":print("start  \n\t\t\t >>  第二次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'iso-8859-1')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types_2 == "us-ascii" or content_types_2 == "\"us-ascii\"":print("start  \n\t\t\t >>  第二次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'us-ascii')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types_2 == "utf-8" or content_types_2 == "UTF-8" or content_types_2 == "\"utf-8\"" or content_types_2 == "\"UTF-8\"" or content_types_2 == "utf8" or content_types_2 == "UTF8" or content_types_2 == "\"utf8\"" or content_types_2 == "\"UTF8\"":print("start  \n\t\t\t >>  第二次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'utf-8')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)elif content_types_2 == "ascii" or content_types_2 == "ASCII" or content_types_2 == "\"ascii\"" or content_types_2 == "\"ASCII\"":print("start  \n\t\t\t >>  第二次定位字符集:", content_types_2, " <<")msg = MIMEText(content, 'html', 'ascii')msg['Subject'] = Header(subject, 'gbk')msg['From'] = '发信用户@域名t'msg['To'] = '发信用户@域名t'smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口smtp.ehlo(smtpserver)smtp.login(user, password)smtp.sendmail(sender, receive, msg.as_string())smtp.quit()content_txt = abc + eml_name[0] + ".txt"print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)sprint("eml文件原路径:", paths)print("发送成功eml:", ok_eml + eml_txt[0])shutil.copyfile(paths, new_dir)time.sleep(1)x = x + 1print("\033[7m", '+' * 20, "end", '+' * 20, x + y + z, '+' * 20, "\033[0m")time.sleep(1)else:print("start  \n\t\t\t >>  最后定位字符集不能通过: ERROR <<")error_eml = error_eml + 1error_eml_txt.append(eml_name)print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n\n")continue"""# msg = MIMEText(content, 'html', "gbk")# msg['Subject'] = Header(subject, 'gbk')# msg['From'] = '发信用户@域名t'# msg['To'] = '发信用户@域名t'# smtp = smtplib.SMTP_SSL(smtpserver, 465)  #  可更改端口号,465属于加密端口# smtp.ehlo(smtpserver)# smtp.login(user, password)# smtp.sendmail(sender, receive, msg.as_string())# smtp.quit()# content_txt = abc + eml_name[0] + ".txt"# print("文件内容结果:", content_txt)# 解析后的内容以txt格式存进指定文件夹# with open(content_txt , 'w') as f :#     f.write(content)s# print("eml文件原路径:", paths)# print("发送成功eml:", ok_eml + eml_txt[0])# shutil.copyfile(paths, new_dir)# time.sleep(1)# z = z + 1# print("\033[7m",'+' * 20 , "end" , '+' * 20 , x+y+z , '+' * 20 , "\033[0m")# time.sleep(1)已结束此部分运行"""print("\n\n")print("\033[33m共发邮件: ", x+y+z , " 封!\033[0m")print("\033[33m第一方案: ", x , " 封!\033[0m")print("\033[33m第二方案: ", y , " 封!\033[0m")print("\033[33m最后方案: ", z , " 封!\033[0m" + "\n" + "*"*60)print("\033[33m不能解析字符集或者没有字符集标识的邮件: ", d , " 封!\033[0m")print("\033[33m如下: \n", d_txt , "\033[0m" + "\n")print("\033[33m乱码文件: ", c , " 封!\033[0m")print("\033[33m如下: \n", c_txt , "\033[0m" + "\n")print("\033[33m出现编码冲突的邮件: " , e , " 封\033[0m")print("\033[33m如下: " , e_txt , "\033[0m" + "\n")print("\033[33m出现不能识别到编码格式的邮件: " , g , " 封\033[0m")print("\033[33m如下: " , g_txt , "\033[0m" + "\n" + "*"*60)

将 .eml 格式的文件批量发送给指定用户相关推荐

  1. php公众号批量推送,微信公众号文章如何批量发送给指定的用户

    微信公众号文章如何批量发送给指定的用户 导读:小编根据大家的需要整理了一份关于<微信公众号文章如何批量发送给指定的用户>的内容,具体内容:微信公众号的文章群发的时候,会发给所有的用户,但是 ...

  2. java 对.EML格式邮件文件解析

    使用 Apache James Mime4J <dependency><groupId>org.apache.james</groupId><artifact ...

  3. php怎么实现发送给指定用户,微信小程序 实现模板消息群发、发送给指定用户...

    1. 需求 最近在做一款拼课类小程序,大概需求就是分享课程页面给好友,好友参与达到一定数量后则拼课成功. 好友参与后会给分享者发送一条模板消息 参与人数满足后(拼课成功)会给分享者发送一条模板消息 管 ...

  4. EmlParse:一款超轻量级的批量解析EML格式电子邮件的工具

    工具特点 1.绿色纯天然,无任何依赖库,文件大小不到150K: 2.可批量解析EML格式的电子邮件: 3.可提取EML文件中的正文和附件到指定目录: 4.可生成HTML格式的邮件列表清单,方便用户进行 ...

  5. 如何解析EML(邮件)格式的文件以及一款小巧的EML邮件阅读工具

    在理解EML格式的时候,先回顾一下历史,这样有助于理解邮件的格式,比如邮件传输时为何会有多种编码方式.此外,理解EML格式也有助于理解HTTP协议. 历史溯源 由于历史原因,我们目前看到的大部分的网络 ...

  6. 如何将eml格式转换成pdf文档

    随着电子邮件的广泛应用,我们常常会收到很多EML格式的文件,它们是以文本形式存储的邮件消息.当我们需要将这些邮件消息以PDF格式发送或打印时,就需要将它们转换成PDF格式.在本文中,我们将介绍如何将E ...

  7. EmlBuilder:一款超轻量级的EML格式电子邮件阅读和编辑工具

    EmlBuilder 是一款超轻量级的电子邮件阅读和编辑工具,针对EML格式的文件具有非常强大的解析和容错能力,可实现超文本邮件的编写,并具备内嵌图片的编辑功能.该工具内部使用EmlParse对电子邮 ...

  8. 如何将EML格式邮件导入notes数据库中

    Notes 8.5.2已经支持将邮件另存为EML格式的文件,但是目前还不支持将eml文件导入notes数据库,下面方法可以帮助大家批量将EML导入nsf数据库中,当然,这个方法需要第三方软件的协助 1 ...

  9. eml是什么文件无需登陆直接就可以打开?

    设计上午接到项目图纸,准备二次设计.对方直接发送了eml格式文件过来,设计用尽了自己电脑上的软件(画图的.看图的.foxmail打开不会注册)也没搞定,联系了我.之前也并未接触过eml格式的文件,双击 ...

最新文章

  1. JNI的native代码中打印日志到eclipse的logcat中
  2. 光伏电池组 局部阴影时输出模型 P-U曲线 I-U曲线 simulink实现 MPPT-Model
  3. ASP.NET—001:GridView绑定List、页面返回值
  4. html5重新加载页面,使用AngularJSHTML 5模式重新加载页面会产生错误的GET请求
  5. JLOI2016 方
  6. python etree创建xml_Python构建XML树结构的实例教程
  7. 漫步数理统计二——集合论
  8. 等高线地图_高中地理——每日讲1题(北美洲的气候、等高线的阅读)
  9. Linux全攻略--DHCP服务器配置与管理
  10. day7 地址 名片管理系统
  11. 【海洋女神原创】Installshield脚本拷贝文件常见问题汇总
  12. python游戏房间_Python House冒险-如果已经进入一个房间,如何给出不同的输出
  13. 基础教程之Running Man奔跑
  14. React常用的命令解析
  15. 李兴华java开发百度网盘_魔乐科技MLDN-李兴华老师零基础学Java系列教程 百度网盘...
  16. C++个人银行账户管理系统
  17. 侠客行java_MUDOS 侠客行100 MUDLIB 的一些摸索...
  18. HBase常用命令使用
  19. python爬取大众点评字体_python采集大众点评(字体反爬)
  20. 计算机pc610台湾研华,研华科技工业电脑各尺寸上架式机箱型号介绍

热门文章

  1. linphone代码分析
  2. linux mysql批量导入数据,linux怎么快速导入Mysql数据库与导出
  3. Python pip保姆级环境变量设置
  4. 第十四章:Electron-Vue 隐藏顶部菜单 隐藏关闭按钮、自定义关闭 最大化 最小化按钮
  5. 注册域名是什么意思?域名注册可以注册哪些域名?
  6. pom文件(本地邮箱服务器配置)
  7. 犀牛书读书笔记-客户端javascript时间线
  8. IC设计——EDA软件篇——xcelium
  9. return o1-o2是升序的原因
  10. qdebug重定向_qDebug重定向到写入文件以及显示在界面控件上