精华内容
下载资源
问答
  • Python发邮件代码

    2015-04-07 18:05:07
    Python发邮件代码
  • python发邮件详解,smtplib和email模块详解

    万次阅读 多人点赞 2018-09-06 18:20:56
    在介绍具体的实现python发邮件的具体操作之前,我觉得有必要介绍下SMTP,更有助于理解python发邮件的实现原理。SMTP协议属于TCP/IP协议簇,即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它...

    在介绍具体的实现python发邮件的具体操作之前,我觉得有必要介绍下SMTP,更有助于理解python发邮件的实现原理。SMTP协议属于TCP/IP协议簇,即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式,python实现发邮件也是基于此基础上进行封装的。

    1.python发邮件所需要的基础包

    python发送邮件需要用到python自带的两个模块,smtplib和email。直接import导入,无需下载。
    python的smtplib提供了一种很方便的途径发送电子邮件,它对smtp协议进行了简单的封装。

    2.smtplib的用法

    smtplib用法相对来说很简单,就是分为两步。

    • 创建SMTP的操作对象并连接smtp目标服务器,可以是163、QQ等
    • 根据自己的账号登录目标服务器(自己的邮箱地址和邮箱授权码)
    • 调用对象中的方法,发送邮件到目标地址

    python与smtp服务器之间的具体交互的通用代码:

    import smtplib
    server = smtplib.SMTP(mailserver, port)  # 发件人邮箱中的SMTP服务器,端口是25
    server.login(sender, passwd)  # 发件人邮箱账号、邮箱授权码
    # msg.as_string()中as_string()是将msg(MIMEText或MIMEMultipart对象)变为str。
    server.sendmail(sender, receive, msg.as_string())  
    server.quit()

    具体的python连接目标服务器的代码如下:注:本文章用的是qq的smtp服务器。
    常用邮箱的smtp服务器地址:
    新浪邮箱:smtp.sina.com,搜狐邮箱:smtp.sohu.com,qq邮箱:smtp.qq.com

    sender_maile='80617252@qq.com' # 发送方的邮箱地址
    sender_pass = 'lsjdfsljdfk' # 邮箱提供的授权码,可在第三方登录,我这个是随便打的。
    sftp_obj =smtplib.SMTP('smtp.qq.com', 25)
    sftp_obj.login(sender_mail, sender_pass)
    #三个参数分别是:发件人邮箱账号,收件人邮箱账号,发送的邮件体
    sftp_obj.sendmail(sender_mail, receiver_mail, msg_root.as_string())
    sftp_obj.quit()
    3.email模块的详细理解和使用

    email模块下的mime模块下有常用的三个模块,三个模块中有三个大类。其实就是下边这三个了,说的很绕,下边为导入方式,一目了然。

    from email.mime.text import MIMEText    
    from email.mime.image import MIMEImage
    from email.mime.multipart import MIMEMultipart    

    简单说下他们的关系,如果构造一个MIMEText对象,就表示一个文本邮件对象,如果构造一个MIMEImage对象,就表示一个作为附件的图片对象,要把多个对象组合起来,就用MIMEMultipart对象,他代表的是整个邮件。这样说应该还不是很清晰,下边就分开来说,最后会总的总结,在最后边就是完整的代码(可以发送一切内容的代码)。

    A.MIMEText对象中有三个需要我们设置的参数,一个是正文内容,一个是正文内容的类型,例如:”text/plain”和”text/html”,一个是正文内容的编码。

    构造普通文本:

    text_info = 'hello world '
    text_sub = MIMEText(text_info,'plain', 'utf-8')  

    构造超文本:

    url = "https://blog.csdn.net/chinesepython"
    html_info = """
        <p>点击以下链接,你会去向一个更大的世界</p>
        <p><a href="%s">click me</a></p>
        <p>i am very glasses for you</p>
        """ % url
    html_sub = MIMEText(html_info, 'html', 'utf-8')  
    # 如果不加下边这行代码的话,上边的文本是不会正常显示的,会把超文本的内容当做文本显示
    html_sub["Content-Disposition"] = 'attachment; filename="csdn.html"'

    构造base64数据流,用于发送文件的时候使用,构造附件代码:

    txt_file = open(r'D:\python_files\files\hello_world.txt', 'rb').read()
    txt = MIMEText(txt_file, 'base64', 'utf-8')
    txt["Content-Type"] = 'application/octet-stream'
    # 命名发送的附件
    txt.add_header('Content-Disposition', 'attachment', filename='hello_world.txt')
    B.MIMEImage对象中只需要把读取的文件传入就行

    构造图片:

    image_file = open(r'D:\python_files\images\test.png', 'rb').read()
    image = MIMEImage(image_file)
    image.add_header('Content-ID', '<image1>')
    # 命名发送的图片
    image["Content-Disposition"] = 'attachment; filename="red_people.png"'
    C.MIMEMultipart对象创建的类型有三种,此模块主要是通过attach方法把上边构造的内容传入到邮件的整体内容中。
    • 邮件类型为”multipart/alternative”的邮件正文中包括纯文本正文(text/plain)和超文本正文(text/html)。
    • 邮件类型为”multipart/related”的邮件正文中包括图片,声音等内嵌资源。
    • 邮件类型为”multipart/mixed”的邮件包含附件,图片,文本等都可以添加,所以发的内容多的话一般是用这个的,选择mixed类型,什么内容都可以发。
    3.邮件头添加内容

    直接上示例代码:

    from email.mime.multipart import MIMEMultipart
    
    
    msg_root = MIMEMultipart('mixed')
    # 发件人
    msg_root['From'] = 'aaa@qq.com<aaa@qq.com>'
    # 收件人
    msg_root['To'] = '666666@qq.com'
    # 邮件主题
    subject = 'python sendemail test successful'
    msg_root['subject'] = Header(subject, 'utf-8')
    
    4.特别的用法说明:

    注:以下的msg_root为:
    msg_root = MIMEMultipart(‘mixed’)

    msg_root.as_string()是将msg_root对象变为str。
    msg_root.attach(MIMEText或者MIMEImage对象),因为MIMEMultipart对象代表邮件本身,其他连个是代表邮件正文,所以这个方法还是很强大的,把其他的构造内容添加到MIMEMultipart对象中就可以把文本,html,附件等一起发送了。

    5.发送各种内容的具体代码实现:

    所有代码合到一块,发送文本,html,图片,txt内容,用的时候你可以把需要的部分摘出来,也就是把没有加入到msg_root的对象拿出来,直接通过下边命令发送,例如只发送文本。
    sftp_obj.sendmail(sender_mail, receiver_mail, text_sub.as_string())。

    import smtplib
    from email.header import Header
    from email.mime.text import MIMEText
    from email.mime.image import MIMEImage
    from email.mime.multipart import MIMEMultipart
    
    
    def send_email_by_qq(to):
        sender_mail = '80617252@qq.com'
        sender_pass = 'aljflsjdf'#同样是乱打的
    
        # 设置总的邮件体对象,对象类型为mixed
        msg_root = MIMEMultipart('mixed')
        # 邮件添加的头尾信息等
        msg_root['From'] = '80617252@qq.com<80617252@qq.com>'
        msg_root['To'] = to
        # 邮件的主题,显示在接收邮件的预览页面
        subject = 'python sendemail test successful'
        msg_root['subject'] = Header(subject, 'utf-8')
    
        # 构造文本内容
        text_info = 'hello world'
        text_sub = MIMEText(text_info, 'plain', 'utf-8')
        msg_root.attach(text_sub)
    
        # 构造超文本
        url = "https://blog.csdn.net/chinesepython"
        html_info = """
        <p>点击以下链接,你会去向一个更大的世界</p>
        <p><a href="%s">click me</a></p>
        <p>i am very galsses for you</p>
        """% url
        html_sub = MIMEText(html_info, 'html', 'utf-8')
        # 如果不加下边这行代码的话,上边的文本是不会正常显示的,会把超文本的内容当做文本显示
        html_sub["Content-Disposition"] = 'attachment; filename="csdn.html"'   
        # 把构造的内容写到邮件体中
        msg_root.attach(html_sub)
    
        # 构造图片
        image_file = open(r'D:\python_files\images\test.png', 'rb').read()
        image = MIMEImage(image_file)
        image.add_header('Content-ID', '<image1>')
        # 如果不加下边这行代码的话,会在收件方方面显示乱码的bin文件,下载之后也不能正常打开
        image["Content-Disposition"] = 'attachment; filename="red_people.png"'
        msg_root.attach(image)
    
        # 构造附件
        txt_file = open(r'D:\python_files\files\hello_world.txt', 'rb').read()
        txt = MIMEText(txt_file, 'base64', 'utf-8')
        txt["Content-Type"] = 'application/octet-stream'
        #以下代码可以重命名附件为hello_world.txt  
        txt.add_header('Content-Disposition', 'attachment', filename='hello_world.txt')
        msg_root.attach(txt)
    
        try:
            sftp_obj =smtplib.SMTP('smtp.qq.com', 25)
            sftp_obj.login(sender_mail, sender_pass)
            sftp_obj.sendmail(sender_mail, to, msg_root.as_string())
            sftp_obj.quit()
            print('sendemail successful!')
    
        except Exception as e:
            print('sendemail failed next is the reason')
            print(e)
    
    
    if __name__ == '__main__':
        # 可以是一个列表,支持多个邮件地址同时发送,测试改成自己的邮箱地址
        to = '666666@qq.com'
        send_email_by_qq(to)
    6.总结

    为了让不是很理解发邮件的朋友能更好的理解,在这里是把所有的参数都写死了,比如说发送文件的具体内容,在真正开发使用过程中,可以把具体的内容通过预留出来参数去传入之后发送你想要发送的内容。
    发邮件功能还是很实用的,在真正的开发中或者大多数场合都能用到,比如说项目中一个重要的模块如果出问题了,你需要第一时间知道,就可以加入这个功能,把项目出问题报的具体内容发到你的邮箱,也可以第一时间想下处理的对策。
    下面以我通过此程序发送的邮件内容的截图做结尾吧。
    这里写图片描述

    展开全文
  • 可以使用Python的email模块来实现带有附件的邮件的发送。 SMTP (Simple Mail Transfer Protocol)邮件传送代理 (Mail Transfer Agent,MTA) 程序使用SMTP协议来发送电邮到接收者的邮件服务器。SMTP协议只能用来发送...
  • Python发邮件源码

    2019-01-16 17:20:24
    发邮件代码,Python,亲测可用。用pycharm写,直接更改件人邮箱、密码,和收件人邮箱即可
  • python发邮件

    2014-03-13 14:48:17
    使用python发送邮件,使用的是smtplib库
  • python发送邮件报表
  • Python发邮件遇到的巨坑

    千次阅读 2018-11-04 11:59:22
    使用的是django框架,因为它已经封装好了发邮件的模块,想来不会太难。结果一试,553、553、553…然后,一天过去了… 1.使用QQ邮箱发邮件   上面提到的535,百度一查,说是没有开启POP3/SMTP服务的原因,登上qq...

      因网站需要,准备添加一个邮箱绑定的功能。使用的是django框架,因为它已经封装好了发邮件的模块,想来不会太难。结果一试,553、553、553…然后,一天过去了…

    1.使用QQ邮箱发邮件

      上面提到的553,百度一查,说是没有开启POP3/SMTP服务的原因,登上qq邮箱查看,确实没有开启,于是发了验证码开启了服务,也得到了授权码。想着应该没问题,但一运行,535、535、535…懵逼的我又一查,说是验证失败。它返回的错误信息是:" 请用授权码登录 "!!我…不是刚开了授权码吗??好嘛,我再重新获取一次,再一次、再一次…自己玩去吧。

    2.使用163邮箱发邮件

      在QQ的坑里徘徊许久,终于弃它而去,打算使用163邮箱。先注册了个账号,然后熟练地开启了SMTP服务,设置了自己的授权码。迫不及待地进行测试,发了一封邮件给自己的163账号,看到一封新邮件的提示,真是差点留下激动的泪水…重拾信心的我又给QQ的账号发了封邮件,然后…就没有然后了。一个巨坑在前方的路上静静潜伏着,而我毫无意外地掉入其中,从而开始了被554支配的噩梦。发给自己?可以!发给QQ?554、发给163其他用户?554…什么?说我这是垃圾邮件拒收。好,我改,我再改,我再再改,我…我改不了了!去你的反垃圾机制。

    3.重回QQ邮箱

      QQ不行,163不行,mailgun被“玩坏”,sparkpost要域名。邮件绑定何去何从?最终,还是回到了起点。源于各种搜文档时无意看到的一篇文章,说是 使用QQ的SMTP服务前需要先设置邮箱的独立密码!!!前面搜了这么多文章,竟然一个没提到!无论真假,先试一试再说,先设置了邮箱的独立密码,然后再重新开启SMTP服务,得到新的授权码,一运行,熟悉的邮件提醒呈现眼前。
    在这里插入图片描述
    。。。。。
    我以为前方从此一片坦途,真是too young too simple!竟然第二次测试就不行了,又说授权码错误!无言以对,这失效时间是不是太短了一点!!!!要是每发一次就获取一次授权码,不得累死??看来我还是远远低估了QQ的恶意。

    4.柳暗花明又一村

      正当博主“山穷水尽疑无路”之时,看到了139邮箱的字眼。(之前还真不知道有这个邮箱),一查,是移动的专属邮箱。由于博主用的就是移动号,所以直接登录使用了,而且SMTP/POP3这些服务都是默认开启的,还不用授权码,直接用密码就能发邮件。试着给QQ和163分别发了一封,完全没问题!(有可能会被放到垃圾箱里)。
    在这里插入图片描述
    在这里插入图片描述

    5.总结

    弄了这么久,总算搞定了。写了这么多,回头一看,写成了吐槽文(实在是忍不住想要吐槽一番。)
    最后,作为技术博客,还是放上一个干货链接吧——python自动发邮件及实例讲解

    博主其他系列文章:

    [1] 【python实用特性】-切片

    [2] 【python实用特性】- 迭代、可迭代对象、迭代器

    [3] 【python实用特性】- 列表生成式

    [4] 【python实用特性】- yield生成器

    [5] Python如何爬取动态网页数据

    [6] Python+selenium实现自动爬取实例

    [7] Python爬取豆瓣Top250-改进版

    [8] requests 设置请求头、代理

    展开全文
  • python3 多账户发邮件代码:是使用python3 进行开发的,可以同时对多个账号邮箱进行发送邮件,可以直接运行
  • python3使使用用SMTP发送送简简单单文文本本邮邮件件 这篇文章主要为大家详细介绍了python3使用SMTP发送简单文本邮件具有一定的参考价值感兴趣的小伙伴们 可以参考一下 一一 设置置开开启启SMTP服服务并并获取取授...
  • Python- python发邮件
  • 主要介绍了python 实现的发送邮件模板,包含Python发送普通邮件、带附件及带图片邮件相关实现技巧,需要的朋友可以参考下
  • py代码-python发邮件

    2021-07-16 15:13:16
    py代码-python发邮件
  • python发邮件邮件内放入表格

    千次阅读 2019-07-11 17:13:00
    上一篇写了一般的邮件发送,包括文字,图片,附件。 这次有尝试添加表格到邮件中。...样例依旧参考...Python 邮件发送测试...</p> <p><a href="http://www.ru...

    上一篇写了一般的邮件发送,包括文字,图片,附件。

     

    这次有尝试添加表格到邮件中。其实就是采用html的方式。样例依旧参考 https://www.runoob.com/python/python-email.html

    其中mail_msg = """ <p>Python 邮件发送测试...</p> <p><a href="http://www.runoob.com">这是一个链接</a></p> """,只需要修改mail_msg变量即可。

    想添加一些样式也可以,参考如下,更多样式,参考 https://www.runoob.com/html/html-formatting.html

      <p>正文</p>
      <p></p>
      <table border="1" cellpadding="0" cellspacing="0" width="1800" style="border-collapse: collapse;">
       <tbody>
        <tr>
         <th>标签1</th>
         <th>标签2</th>
        </tr>
        <tr>
         <td  style="color:red;"> 红色 </td>
         <td  style="text-align:center"> 居中 </td>
        </tr>
      </tbody>
      </table> 

     

    转载于:https://www.cnblogs.com/qiancaofengling/p/11171326.html

    展开全文
  • python发邮件程序

    2014-12-09 17:11:32
    python发邮件程序,发送方法:./mail.py 收件人 主题 html内容 图片文件 附件文件'
  • 今天用python发邮件出现如下错误:Traceback (most recent call last): File "D:\motest.py", line 95, in &lt;module&gt; sendmail(service_name,test) File "D:\motest.py&...
    今天用python发邮件出现如下错误:
    

    Traceback (most recent call last):
      File "D:\motest.py", line 95, in <module>
        sendmail(service_name,test)
      File "D:\motest.py", line 30, in sendmail
        server = smtplib.SMTP(host, 25)
      File "C:\Python27\lib\smtplib.py", line 256, in __init__
        (code, msg) = self.connect(host, port)
      File "C:\Python27\lib\smtplib.py", line 316, in connect
        self.sock = self._get_socket(host, port, self.timeout)
      File "C:\Python27\lib\smtplib.py", line 291, in _get_socket
        return socket.create_connection((host, port), timeout)
      File "C:\Python27\lib\socket.py", line 557, in create_connection
        for res in getaddrinfo(host, port, 0, SOCK_STREAM):
    gaierror: [Errno 11004] getaddrinfo failed

    以前是天天可以发的,今天突然出现这个错误,python2.7,windows的系统的电脑


    试了很多方法,终于找到原因了:

    原因是我配置的dns服务器IP223.5.5.5不能用了,后来改了个可用的dns就解决了

    展开全文
  • Python 发邮件

    千次阅读 2018-01-15 15:32:22
    这里用到了Python的两个包来发送邮件: smtplib 和 email 。  Python 的 email 模块里包含了许多实用的邮件格式设置函数,可以用来创建邮件“包裹”。使用的 MIMEText 对象,为底层的 MIME(Multipurpose Internet...
  • 开始我实现的是每个项目一封邮件,发给销售,抄送给领导 这样的问题是领导一次性会收到100封邮件,不便于筛选 然后我修改了一下,按照部门发送邮件。这100个销售分别属于5个部门,我只发送5封邮件,每封邮件发送给...
  •  爬虫写的比较顺利,但发邮件的部分出了一些问题,在自己的Linux环境下运行没问题,在云服务器上却连接不到smtp服务器,代码大概是这样的:import smtplib from email.mime.text import MIMEText def se...
  • 一、使用python发送QQ邮件获得授权码方法 1.登陆邮箱---->邮箱设置---->账户安全 2.将前两个服务开启,然后点击“生成授权码”,根据要求一步一步操作即可得到授权码 QQ邮箱的服务器为 二、使用...
  • 主要为大家详细介绍了python发送多人邮件没有展示收件人问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要为大家详细介绍了Python3实现发送QQ邮件功能,html格式的qq邮件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • /usr/bin/env python3 # -*- coding: utf-8 -*- import smtplib from email.mime.text import MIMEText from email.utils import formataddr # 件人邮箱账号 my_sender='xx@xxx.com' # user登录邮箱的用户名,...
  • 主要为大家详细介绍了Python3实现发送QQ邮件功能,附件方面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • python发邮件详细实例

    2012-07-29 00:42:12
    详细展示了各种使用python发邮件的程序实例
  • python发送带附件的邮件代码,大家可以看看哟。亲测无问题。
  • 该源码是针对特定网站,不是通用代码,但是具有一定的参考性,不想下载可以看我博客有相应的每个部分的代码块 http://blog.csdn.net/henni_719/article/details/60580815

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 133,892
精华内容 53,556
关键字:

python发邮件

python 订阅