700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Python使用smtplib模块发送电子邮件的流程详解

Python使用smtplib模块发送电子邮件的流程详解

时间:2024-09-01 00:47:16

相关推荐

Python使用smtplib模块发送电子邮件的流程详解

后端开发|Python教程

Python,smtplib,电子邮件,SMTP

后端开发-Python教程

1、登录SMTP服务器

首先使用网上的方法(这里使用163邮箱,是smtp服务器地址,25为端口号):

html 后台源码,ubuntu语言怎么更改,网易云爬虫java,快手php,python+seolzw

import smtplibserver = smtplib.SMTP(\, 25)server.login(j_hao104@, password)Traceback (most recent call last): File "C:/python/t.py", line 192, in server.login(j_hao104@, password) File "C:\Python27\lib\smtplib.py", line 622, in login raise SMTPAuthenticationError(code, resp)smtplib.SMTPAuthenticationError: (535, Error: authentication failed)

微信群管家 源码,vscode做一个翻译软件,ubuntu 按键声音,tomcat运行网页打不开,py爬虫原理,php配置虚拟域名,太原seo关键词排名软件lzw

发现返回:

第三方分销微商城免费开源源码,ubuntu 终端多窗口,梦见被爬虫咬,旧版本网站如何兼容php5,seo基本结构lzw

smtplib.SMTPAuthenticationError: (535, Error: authentication failed)

,提示验证失败。

有说python不支持SMTP服务,或是服务没开启之类的。但是我想起上次我用foxmail登录我的163邮箱的时候,邮箱密码都输对了还是提示我密码错误,最后的解决办法是:像QQ和163邮箱现在都有个客户端密码,用第三方登录时需用客户端密码登录才行,python也是如此,因此去设置好客户端密码,再用客户端密码登录。

import smtplibserver = smtplib.SMTP(\, 25)server.login(j_hao104@, clientPassword)

此时便返回登录成功提示:

(235, Authentication successful)

2、发送邮件

首先使用网上给出的代码:

import smtplibfrom email.mime.text import MIMETextserver = smtplib.SMTP(\, 25)server.login(j_hao104@, clientPassword)msg = MIMEText(hello, send by Python..., plain, utf-8)server.sendmail(j_hao104@, [946150454@], msg.as_string())

构造MIMEText对象时,第一个参数是邮件正文,第二个参数是MIME的subtype,最后个是编码方式。

sendmail是发邮件方法,第一个参数是发件邮箱,第二个参数是收件人邮箱,是一个列表,代表可以同时发给多个人,as_string是把MIMEText对象变成str。

但是执行结果并不能得到网上说的结果:

而是:

Traceback (most recent call last): File "C:/python/t.py", line 195, in server.sendmail(j_hao104@, [946150454@], msg.as_string()) File "C:\Python27\lib\smtplib.py", line 746, in sendmail raise SMTPDataError(code, resp)smtplib.SMTPDataError: (554, DT:SPM 163 smtp11,D8CowEDpDkE427JW_wQIAA--.4996S2 1454562105,please see /help/help_spam_16.htm?ip=171.221.144.51&hostid=smtp11&time=1454562105)

网上一查才知道:smtplib.SMTPDataError: (554, ‘DT:SPM 163 smtp11……的错误是因为信封发件人和信头发件人不匹配。可以看出看出图片中并没有发件人和主题,所以需要对代码做如下修改:

import smtplibfrom email.header import Headerfrom email.mime.text import MIMETextserver = smtplib.SMTP(\, 25)server.login(j_hao104@, clientPassword)msg = MIMEText(hello, send by Python..., plain, utf-8)msg[From] = j_hao104@ msg[Subject] = Header(u ext, utf8).encode()msg[To] = u飞轮海 server.sendmail(j_hao104@, [946150454@], msg.as_string())

这样就能成功发出邮件啦

msg里的具体信息可以用一般发邮件方式发封邮件测试下

3、参考示例

import smtplibfrom email.mime.text import MIMETextto_list = [123@, 456@]server_host = \username = 你的邮箱账号password = 你的邮箱密码def send(to_list, sub, content): \ :param to_list: 收件人邮箱 :param sub: 邮件标题 :param content: 内容 \ me = "manager" + "" # _subtype 可以设为html,默认是plain msg = MIMEText(content, _subtype=html) msg[Subject] = sub msg[From] = me msg[To] = ;.join(to_list) try: server = smtplib.SMTP() server.connect(server_host) server.login(username, password) server.sendmail(me, to_list, msg.as_string()) server.close() except Exception as e: print str(e)if __name__ == \__main__: send(to_list, "这个是一个邮件", "

Hello, Its test email.

")

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。