搜索
首页后端开发Python教程python发送邮件示例(支持中文邮件标题)

代码如下:


def sendmail(login={},mail={}):
    '''\
    @param login login['user'] login['passwd']
    @param mail mail['to_addr'] mail['subject'] mail['content'] mail['attach']
    '''
    from datetime import datetime
    from base64 import b64encode
    import smtplib, mimetypes
    from email.mime.text import MIMEText
    from email.mime.multipart import MIMEMultipart
    from email.mime.image import MIMEImage

    user_info = login['user'].split('@')
    mail_configure = {}
    mail_configure['mail_encoding'] = 'utf-8'
    mail_configure['mail_supplier'] = user_info[1]
    mail_configure['from_addr'] = login['user']
    mail_configure['server_host'] = 'smtp.%s' % mail_configure['mail_supplier']
    error = None

    try:
        email = MIMEMultipart()
        email['from'] = mail_configure['from_addr']
        email['to'] = mail['to_addr']
        email['subject'] = '=?%s?B?%s?=' % (mail_configure['mail_encoding'],b64encode(mail['subject']))
        email_content = MIMEText(mail['content'], _charset=mail_configure['mail_encoding'])
        email.attach(email_content)

        if 'attach' in mail:
            for i in mail['attach']:
                ctype, encoding = mimetypes.guess_type(i)
                if ctype is None or not encoding is None:
                    ctype = 'application/octet-stream'
                maintype, subtype = ctype.split('/', 1)
                att = MIMEImage((lambda f: (f.read(), f.close()))(open(i, 'rb'))[0], _subtype = subtype)
                att.add_header('Content-Disposition', 'attachment', filename = i)
                email.attach(att)

        smtp = smtplib.SMTP()
        smtp.connect(mail_configure['server_host'])
        smtp.login(user_info[0], login['passwd'])
        smtp.sendmail(mail_configure['from_addr'], mail['to_addr'], email.as_string())
        smtp.quit()
    except Exception as e:
        error = e

    return (mail_configure['from_addr'], mail['to_addr'], error)

测试

代码如下:


def t21():
    login = {
        'user':'ak43@sina.com',
        'passwd':'hello@d'
    }
    mail = {
        'to_addr':'ak32@sina.com;ak32@21cn.com',
        'subject':'不带附件的测试邮件',
        'content':'''\
        sz002718,友邦吊顶
        sz002719,麦趣尔
        sz002722,金轮股份
        ''',
    }
    print sendmail(login, mail)

    login = {
        'user':'hellot@sina.com',
        'passwd':'hello#world'
    }
    mail = {
        'to_addr':'tom12@sina.com;tom12@21cn.com',
        'subject':'带附件的测试邮件',
        'content':'''\
        sz002718,友邦吊顶
        sz002719,麦趣尔
        sz002722,金轮股份
        ''',
        'attach':['e:/a/a.txt']
    }
    print sendmail(login, mail)

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
PHP开发实践:使用PHPMailer发送邮件到MySQL数据库中的用户PHP开发实践:使用PHPMailer发送邮件到MySQL数据库中的用户Aug 05, 2023 pm 06:21 PM

PHP开发实践:使用PHPMailer发送邮件到MySQL数据库中的用户引言:在现代互联网建设中,邮件是一种重要的沟通工具。无论是用户注册、密码重置,还是电子商务中的订单确认,发送电子邮件都是必不可少的功能。本文将介绍如何使用PHPMailer来发送电子邮件,并将邮件信息保存到MySQL数据库中的用户信息表中。一、安装PHPMailer库PHPMailer是

PHP使用PHPMailer发送多人邮件的方法和步骤PHP使用PHPMailer发送多人邮件的方法和步骤May 22, 2023 pm 06:10 PM

在Web应用程序中,往往需要将邮件一次性发送给多个收件人。PHP是一种很流行的Web开发语言,而PHPMailer是一种常见的发送邮件的PHP类库。PHPMailer提供了丰富的接口,使得在PHP应用程序中发送邮件变得更加方便和易于使用。在本篇文章中,我们将介绍如何使用PHPMailer向多个收件人发送邮件的方法和步骤。下载PHPMailer首先需要在官网(

如何使用Flask-Mail发送电子邮件如何使用Flask-Mail发送电子邮件Aug 02, 2023 am 10:17 AM

如何使用Flask-Mail发送电子邮件随着互联网的发展,电子邮件已经成为了人们沟通的重要工具。在开发Web应用中,有时候我们需要在特定的场景下发送电子邮件,比如用户注册成功后发送欢迎邮件,或者用户忘记密码时发送重置密码邮件等。Flask是一款简单而又灵活的PythonWeb框架,而Flask-Mail是Flask框架下用于发送邮件的扩展库,本文将介绍如何

Python连接阿里云接口,实现邮件发送功能Python连接阿里云接口,实现邮件发送功能Jul 05, 2023 pm 04:33 PM

Python连接阿里云接口,实现邮件发送功能阿里云提供了一系列的服务接口,其中包括了邮件发送服务。通过Python脚本连接阿里云接口,我们可以实现邮件的快速发送。本篇文章将向您展示如何使用Python脚本连接阿里云接口,并实现邮件发送功能。首先,我们需要在阿里云上申请邮件发送服务,获取相应的接口信息。在阿里云管理控制台中,选择邮件推送服务,然后创建一个新的邮

如何使用PHP队列发送邮件?如何使用PHP队列发送邮件?Sep 13, 2023 am 08:00 AM

如何使用PHP队列发送邮件?在现代的Web开发中,我们经常需要发送大量的电子邮件。无论是批量发送电子邮件给大量用户,还是根据用户行为发送个性化的电子邮件,使用队列来发送邮件是一个非常好的实践。队列可以帮助我们提高邮件发送的效率和稳定性,避免因为发送太多邮件而导致服务器负载过高,同时还可以处理发送失败的场景。在PHP开发中,我们可以使用常见的队列工具,如Rab

PHP使用email()函数发送邮件的方法PHP使用email()函数发送邮件的方法May 22, 2023 pm 03:10 PM

随着互联网的不断发展和普及,电子邮件成为人们日常交流中不可缺少的一部分。在网站后台开发过程中,很多时候需要使用PHP发送邮件,以满足邮件通知、注册验证等功能。PHP提供了email()函数来实现邮件的发送,并且使用也非常简单。本文将详细介绍如何使用PHP的email()函数发送邮件。一、SMTP配置在使用email()函数发送邮件前,需要对SMTP进行配置。

PHP使用mail函数发送邮件的完整过程PHP使用mail函数发送邮件的完整过程May 22, 2023 am 08:00 AM

PHP使用mail函数发送邮件的完整过程随着互联网技术的发展,电子邮件在日常生活中扮演着越来越重要的角色,人们发送和接收邮件已经成为必不可少的工作和生活方式。而在网站开发中,也经常需要通过邮件的形式进行各种通知、验证、注册等等操作。本篇文章将介绍PHP使用mail函数发送邮件的完整过程。一、mail函数的基本形式在PHP中,用于发送邮件的函数是mail()。

PHP通过SMTP发送邮件的全面指南PHP通过SMTP发送邮件的全面指南May 27, 2023 am 10:10 AM

随着互联网的发展,电子邮件作为一种重要的通讯方式已成为人们日常生活中不可或缺的一部分。对于Web开发人员来说,通过代码发送电子邮件是一个常见的任务。PHP提供了SMTP(SimpleMailTransferProtocol)发送电子邮件的功能,本文将为您提供全面指南。一、SMTP简介SMTP是用于向服务器或客户端发送和接收电子邮件的标准协议,它是一种文

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能