文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python发送邮件的几种常用方法

2023-09-02 10:03

关注

第一种是最常见的,smtp发送

import smtplibimport sysimport tracebackfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartimport osdef sendEmail(mail_sender, to_list, sub, content, attach_list = [], _subtype="html"):    """    使用smtp发送邮件    :param mail_sender: 发件人    :param to_list: 收件人列表,用,间隔    :param sub: 主题    :param content: 内容    :param attach_list:附件    :param _subtype: 读取内容用的方式,不传html的话改成plain    :return:    """    msg = MIMEMultipart()    msg['subject'] = sub    msg['From'] = mail_sender    msg['To'] = to_list    try:        msg.attach(MIMEText(content, _subtype,'utf-8')) #用html的方法是更方便于word文档作为内容发送,可以先讲word转换成html,然后写入其中        s = smtplib.SMTP('123.com', 25)        # s.login()        s.starttls()        if attach_list:            for att_path in attach_list:                path_arr = att_path.split(os.path.sep)                file_name = path_arr[len(path_arr) - 1]                att1 = MIMEText(open(att_path,'rb').read(), 'base64','utf-8')                att1.add_header('Content-Disposition', 'attachment', filename=file_name) #用这个方法可以避免附件乱码                msg.attach(att1)        s.sendmail(mail_sender, to_list.split(u','), msg.as_string())        s.close()        print("999921||业务数据处理||邮件发送成功")        return True    except Exception as e:        sys.stderr.write("999931||{}".format(traceback.format_exc(limit=None, chain=True)))        sys.stderr.write("0001")        return False

第二种是用outlook发送的,这个大家借鉴使用

import osfrom time import sleepimport autoit as auimport win32com.clientclass OutlookUtills:    def __init__(self):        outlook = win32com.client.Dispatch("outlook.Application ")# outlook.Visible = True        self.mail = outlook.CreateItem(0)        self.mail.Display()    def sendEmail(self, addressee, subiect, AttachmentsPath=[], body=None):        """        若body为默认值None则自动粘贴剪切板中内容进行发送        :param addressee: 收件人        :param subiect: 主题        :param AttachmentsPath: 附件名称        :param body: 正文        :return:        """        self.mail. To = addressee        self.mail.subject = subiect        if AttachmentsPath == []:            print("该邮件无附件")        else:            for Attachments in AttachmentsPath:                self.mail.Attachments.Add(Attachments)                print("地址:{},附件添加成功!!")        sleep(2)        if body == None:            self.mail.body = ""            au.send('^v')            print("正文已从剪切板拷贝")        else:            self.mail.body = body            print("正文由函数进行输入")        sleep(1)        self.mail.Send()if __name__ == '__main__':    my_outlook = OutlookUtills()

第三种是正文需要用到表格的,我在这里给大家一个示例,具体表格怎么改自行发挥

import smtplibfrom email.mime.text import MIMETextfrom email.header import Headerclass Mail:    def __init__(self):        # 第三方 SMTP 服务        self.mail_host = "smtp.qq.com"  # 填写邮箱服务器:这个是qq邮箱服务器,直接使用smtp.qq.com        self.mail_pass = "ahlwsnkajalubeif"  # 填写在qq邮箱设置中获取的授权码        self.sender = '1004983289@qq.com'  # 填写邮箱地址        self.receivers = ['tianyi.zhang@kingstarfintech.com']  # 填写收件人的邮箱,QQ邮箱或者其他邮箱,可多个,中间用,隔开    def send(self):        self.mail_host = "smtp.qq.com"  # 填写邮箱服务器:这个是qq邮箱服务器,直接使用smtp.qq.com        self.mail_pass = "ahlwsnkajalubeif"  # 填写在qq邮箱设置中获取的授权码        self.sender = '1004983289@qq.com'  # 填写邮箱地址        self.receivers = ['tianyi.zhang@kingstarfintech.com']  # 填写收件人的邮箱,QQ邮箱或者其他邮箱,可多个,中间用,隔开        insert = "152371200010240002潘金莲tar152371200010240002.tar20220426-1545否152371200010240002潘金莲tar152371200010240002.tar20220426-1545否"        head = \            """                                                                    """        body = \            """                        

掌厅不存在身份证不一致情况

身份证号姓名文件类型文件名上传时间是否上传成功

""".format(insert) html_msg = "" + head + body + "" html_msg = html_msg.replace('\n', '').encode("utf-8") message = MIMEText(html_msg, 'html', 'utf-8') message['From'] = Header("小胖子xpp", 'utf-8') #邮件发送者姓名 message['To'] = Header("小胖子xpp", 'utf-8') #邮件接收者姓名 subject = '测试' #发送的主题 message['Subject'] = Header(subject, 'utf-8') try: smtpObj = smtplib.SMTP_SSL(self.mail_host, 465) #建立smtp连接,qq邮箱必须用ssl边接,因此边接465端口 smtpObj.login(self.sender, self.mail_pass) #登陆 smtpObj.sendmail(self.sender, self.receivers, message.as_string()) #发送 smtpObj.quit() print('发送成功!!') except smtplib.SMTPException as e: print('发送失败!!')if __name__ == '__main__': mail = Mail() mail.send()

来源地址:https://blog.csdn.net/z1004983289/article/details/129364699

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯