在介绍具体的实现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.comsender_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 = """

点击以下链接,你会去向一个更大的世界

click me

i am very glasses for you

""" % 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', '')

# 命名发送的图片

image["Content-Disposition"] = 'attachment; filename="red_people.png"'

C.MIMEMultipart对象创建的类型有三种,此模块主要是通过attach方法把上边构造的内容传入到邮件的整体内容中。

邮件类型为”multipart/alternative”的邮件正文中包括纯文本正文(text/plain)和超文本正文(text/html)。

邮件类型为”multipart/related”的邮件正文中包括图片,声音等内嵌资源。

邮件类型为”multipart/mixed”的邮件包含附件,图片,文本等都可以添加,所以发的内容多的话一般是用这个的,选择mixed类型,什么内容都可以发。

python发邮件有什么意思_python发邮件要装什么相关推荐

  1. python邮件发送哪个好_python发邮件(一)

    复习模块 如果我们要发送邮件,就需要用到smtplib模块的以下方法: 1.import smtplib       #引入smtplib模块 2.server = smtplib.SMTP()    ...

  2. python发邮件给女朋友代码_python实现邮件发送完整代码(带附件发送方式)

    实例一:利用SMTP与EMAIL实现邮件发送,带附件(完整代码) __author__ = 'Administrator' #coding=gb2312 from email.Header impor ...

  3. python发邮件给女朋友代码_python发邮件的代码

    # -*- coding: utf-8 -*- # ================================================= # # 描述:    KEmail 发送邮件类 ...

  4. python代码封装供第三方使用_python发博客

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python生成csdn博客分享图一.前言我们分享博客的方式有很多种,最常见的无 ...

  5. python发送邮件群发_Python发邮件脚本,Python调用163邮箱SMTP服务实现邮件群发

    邮件营销,一个昔日辉煌,如今没落的广告营销方式,曾经的恶意广告邮件群发,到现在还存留着的大站协议群发,可能还是有不少人能够做到正常群发邮件,但大概率很多人都不会点开邮件查看邮件内容吧,除非是很许可的, ...

  6. python是什么邮箱_python发邮件详解,smtplib和email模块详解

    在介绍具体的实现python发邮件的具体操作之前,我觉得有必要介绍下SMTP,更有助于理解python发邮件的实现原理.SMTP协议属于TCP/IP协议簇,即简单邮件传输协议,它是一组用于由源地址到目 ...

  7. python 发邮件_Python发邮件告别smtplib,迎接zmail

    之前介绍过smtplib发邮件代码,直到今天仍有人在这里遇到问题.而且代码复杂,解释起来很麻烦,今天给大家介绍一个新的发邮件方法--zmail zmail的优势 自动填充头信息 将一个字典映射为ema ...

  8. Jenkins连接python脚本打包(包含更换网络环境,发邮件)

    现在的公司之前,在项目的测试阶段每天都要打包,重复的工作天天干,当然就没热情了,听着Android_studio互斥互斥的跑一次编译打包浪费1分钟多的时间,还要打好几个环境的安装包,实在耽误下班时间. ...

  9. python发送邮件 python发送qq,163,sohu, xinlang, 126等邮件 python自动发邮件总结及实例说明...

    python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用.smtplib模块主要负责发送邮件,email模块主要负责构造邮件. sm ...

最新文章

  1. 华为总裁任正非谈企业管理:正确的方向来自于妥协
  2. C语言中函数的参数列表为空和void的区别
  3. MyBatis的初始化方式
  4. 全排列(去除重复)Permutations II
  5. django 1.8 官方文档翻译: 2-1-1 模型语法(初稿)
  6. description----NSData To NSString
  7. 计算机怎么剪切音乐然后合在一起,mp3剪切合并大师2019(解决如何将两个mp3合并)V12.7 电脑版...
  8. python输入年份判断生肖_python年份判断生肖
  9. 贪吃的小Q_腾讯2018春招技术类编程题
  10. 【mmdetection】mmdetection学习率设置
  11. 数据分析师前景如何,需要学习什么技能?
  12. 办公必备计算机软件,干货分享!电脑必备的4款办公神器
  13. 【Matlab学习手记】标签显示在刻度之间
  14. 疫情风险地区查询数据库
  15. c语言笛卡尔坐标系两点坐标,计算笛卡尔坐标系或极坐标系中2个位置之间的夹角...
  16. Linux进程描述符task_struct结构体
  17. What is design:the answer from Jony Ive
  18. java 行为树_行为树(Behavior Tree)【转载】
  19. Android ps进程命令
  20. STM32实现双通道ADC采集电压电流值

热门文章

  1. 每一个程序员都应该知道的高并发处理技巧、创业公司如何解决高并发问题、互联网高并发问题解决思路、caoz大神多年经验总结分享...
  2. C# 窗口最大化但不占用任务栏位置
  3. Streams全库复制
  4. javascript访问ACCESS数据库
  5. [置顶]IFTTT与Google+是什么?ifttt怎么玩?
  6. qt 程序windows 上发布
  7. [转]一个简单的反射拷贝一份新的实体类
  8. 使用PHP生成分享图片
  9. spring batch @EnableBatchProcessing作用
  10. An Openfire plugin for Webspell sites.