python 发送邮件connect none_Python SMTP发送邮件-smtplib模块

本文介绍了如何使用Python的smtplib和email模块发送邮件,包括SMTP协议的基础知识,Python内置SMTP支持,以及smtplib和email模块的使用方法。详细阐述了连接邮箱服务器、登录、发送邮件的步骤,并提供了添加文本、HTML内容、图片和附件的示例代码。读者将学会如何配置SMTP服务,构造邮件并发送。
摘要由CSDN通过智能技术生成

在进入正题之前,我们需要对一些基本内容有所了解:常用的电子邮件协议有SMTP、POP3、IMAP4,它们都隶属于TCP/IP协议簇,默认状态下,分别通过TCP端口25、110和143建立连接。

Python内置对SMTP的支持,该协议支持发送纯文本邮件、HTML邮件以及带附件的邮件,

Python的smtplib,email模块都支持该协议。

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用。

smtplib模块主要负责发送邮件,email模块主要负责构造邮件。

smtplib模块主要负责发送邮件:是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容)。

email模块主要负责构造邮件:指的是邮箱页面显示的一些构造,如发件人,收件人,主题,正文,附件等。第一步,首先你要准备两个邮箱帐号,一个是常用的(接收端),

另一个可以注册网易163邮箱或者foxmail邮箱也可(发送端),

本次我使用两个QQ邮箱进行演示。首先在邮箱的设置-账户中开启SMTP功能

第二步,点击生成授权码,按照弹出窗口的提示发送短信,发送后单击我已发送按钮。将生成的授权码复制下来以备接下来使用。

QQ 邮箱 SMTP 服务器地址:http://smtp.qq.com,ssl 端口:465。授权码是下面案例中的密码

1.smtplib模块

smtplib使用较为简单。以下是最基本的语法。

导入及使用方法如下:

import smtplib

smtp = smtplib.SMTP()

smtp.connect('smtp.qq.com,465')

smtp.login(username, password)

smtp.sendmail(send_add, to_add, msg.as_string())

smtp.quit()

说明:

smtplib.SMTP():实例化SMTP()

connect(host,port):

host:指定连接的邮箱服务器。常用邮箱的smtp服务器地址如下:

新浪邮箱:smtp.sina.com,

新浪VIP:smtp.vip.sina.com,

搜狐邮箱:http://smtp.sohu.com,

126邮箱:smtp.126.com,

139邮箱:smtp.139.com,

163网易邮箱:http://smtp.163.com。

port:指定连接服务器的端口号,默认为25. 默认很可能会失败,端口号具体内容需要查询邮件服务提供商

login(user,password):

user:登录邮箱的用户名。

password:登录邮箱的密码,像笔者用的是QQ邮箱,QQ邮箱一般是网页版,需要用到客户端密码,需要在网页版的QQ邮箱中设置授权码,该授权码即为客户端密码。

sendmail(from_addr,to_addrs,msg,...):

from_addr:邮件发送者地址

to_addrs:邮件接收者地址。字符串列表['接收地址1','接收地址2','接收地址3',...]或'接收地址'

msg:发送消息:邮件内容。一般是msg.as_string():as_string()是将msg(MIMEText对象或者MIMEMultipart对象)变为str。

quit():用于结束SMTP会话。

2.email模块

email模块下有mime包,mime英文全称为“Multipurpose Internet Mail Extensions”,即多用途互联网邮件扩展,是目前互联网电子邮件普遍遵循的邮件技术规范。

该mime包下常用的有三个模块:text*,image,*multpart。

导入方法如下:

from email.mime.multipart import MIMEMultipart

from email.mime.text import MIMEText

from email.mime.image import MIMEImage

构造一个邮件对象就是一个Message对象,

如果构造一个MIMEText对象,就表示一个文本邮件对象,

如果构造一个MIMEImage对象,就表示一个作为附件的图片,

要把多个对象组合起来,就用MIMEMultipart对象,

而MIMEBase可以表示任何对象。它们的继承关系如下:

Message

+- MIMEBase

+- MIMEMultipart

+- MIMENonMultipart

+- MIMEMessage

+- MIMEText

+- MIMEImage

2.1 text说明

邮件发送程序为了防止有些邮件阅读软件不能显示处理HTML格式的数据,通常都会用两类型分别为"text/plain"和"text/html"

构造MIMEText对象时,第一个参数是邮件正文,第二个参数是MIME的subtype,最后一定要用utf-8编码保证多语言兼容性。2.1.1添加普通文本

text = "Hi!\nHow are you?\nHere is the link you wanted:\nhttp://www.zhihu.com"

text_plain = MIMEText(text,'plain', 'utf-8')

查看MIMEText属性:可以观察到MIMEText,MIMEImage和MIMEMultipart的属性都一样。

print dir(text_plain)

['contains', 'delitem', 'doc', 'getitem', 'init', 'len', 'module', 'setitem', 'str', '_charset', '_default_type', '_get_params_preserve', '_headers', '_payload', '_unixfrom', 'add_header', 'as_string', 'attach', 'defects', 'del_param', 'epilogue', 'get', 'get_all', 'get_boundary', 'get_charset', 'get_charsets', 'get_content_charset', 'get_content_maintype', 'get_content_subtype', 'get_content_ty

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值