【邮件发送】pyqt5+stmp邮件批量发送不同附件给不同人

今天我们通过通过pyqt5界面发送一个邮件

功能:

        ①界面构思

        ②读取目录下配置信息 

        ③依次循环文件中的信息

        ④发送邮件

完成这么一个工具,需要PyQt5、os、configparser、smtplib等主要模块,同时通过这些代码调试,会对这些模块也有一个新的认识。


 ①界面设置

通过Qt Creator 设计出想要的界面

click信号传递,是根据使用者来定,用于.ui文件中设置,还是在代码中写入,条条道路通罗马,就看使用者更倾向于那一种。

qtCreatorFile ="./MainWindow.ui"

# 使用uic加载

Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)

class MainWindow(QMainWindow,Ui_MainWindow):

def __init__(self):

QMainWindow.__init__(self)

Ui_MainWindow.__init__(self)


②读取目录下配置信息

        此处需要运用到configparser模块

        path = os.path.join(os.path.dirname(__file__),'mailinfo.ini').replace('\\','/')

        config = configparser.RawConfigParser()

        # 读取.ini文件


 config.read('mailinfo.ini')

        # 列出所有section

        sec = config.sections()

        print(" 邮箱发送组:{}!".format(sec))

        #print('sections:', sec)

        # 列出指定section中的option

        opts = config.options("mail1")

        #print('options:', opts)

         items1 = config.items('mail1')



③依次循环文件中的信息

    for section in sec:

        fundid = config.get(section,'fundid')

        tolist = config.get(section,'tolist')

        cc_mail = config.get(section,'cc_mail')

        sub_title = config.get(section,'sub_title')

        passage = config.get(section,'passage')


#附件添加

        load = fundid +'_' + gzdate

        payload ='C:/TEST/'+load +'.xls'

此处对payload ,测试,发现若 换成

tt=self.textEdit_xpath.txt() 

 payload =tt+load +'.xls',

在添加附件时,att1 = MIMEText(open(isExistAttach,'rb').read(),'base64','utf-8') ,此处发送cnfig第一个邮箱后的第二个会调试退出,多次测试,也不知道原因,待以后解决



④发送邮件

try:

mail_host=‘****.com.cn’

smtp = smtplib.SMTP()

smtp.connect(mail_host)

smtp.login(mail_user, mail_pass

msg = MIMEMultipart()

msg['From'] =From

msg['mail_pass'] = mail_pass

msg["To"] = To# qt5 收件人会出现多个字符串形式g,

    msg["Cc"] = Cc

msg['Subject'] = Subject +'-' + time1# 标题

    isExistAttach = payload

filename = os.path.basename(isExistAttach)

att1 = MIMEText(open(isExistAttach,'rb').read(),'base64','gb2312')# 添加表格为附件

    att1["Content-Type"] ='application/octet-stream'

    # 附件名称为中文时的写法

    att1.add_header("Content-Disposition","attachment",filename=filename)

# 附件名称非中文时的写法

    # att["Content-Disposition"] = 'attachment; filename="test.html")'

    msg.attach(att1)

print("附件为:".format(filename))

msg.attach(MIMEText(DictData['passage'],'plain','utf-8'))# 添加正文

    smtp.sendmail(DictData['From'], DictData["To"].split(',') + DictData["Cc"].split(','), msg.as_string())

print("‘{}’邮箱发送成功!".format(Subject))

smtp.quit()



第一次写,希望后续会越来越棒,目前也建了一个群1095106956,需要优化升级,或者有新的想法的朋友,可以加入,一起探讨!

你可能感兴趣的:(【邮件发送】pyqt5+stmp邮件批量发送不同附件给不同人)