您的位置:首页 > 编程语言 > Python开发

解决Python通过STMP发送邮件出现socket.error: [Errno 10061]

2016-10-20 22:18 591 查看
在学习Python通过STMP发送邮件过程中出现了socket.error: [Errno 10061]的问题。以下是出问题的代码。

# -*- coding:utf-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.header import Header
sender = '***@**.com'
receivers = ['***@**.com']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message = MIMEText('Python SMTP 邮件发送测试', 'plain', 'utf-8')
message['From'] = Header("From测试", 'utf-8')
message['To'] =  Header("To测试", 'utf-8')

subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')

try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender,receivers,message.as_string())
print "邮件发送成功"
except smtplib.SMTPException:
print "Error: 无法发送邮件"


经过查询之后发现需要在本机上安装sendmail,上述代码才可以正常执行。我没有装sendmail,所以想要了解的可自己查阅使用sendmail发送邮件。

如果本机没有安装sendmail的话,则需要借助其他邮件服务商提供的SMTP访问(这里我使用的是163邮箱)。

# -*- coding:utf-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 第三方 SMTP 服务
mail_host="smtp.163.com"  #设置服务器
mail_user="***@163.com"   #用户名
mail_pass="***"   #口令

sender = '***@163.com'
receivers = '[***@163.com]'  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

message = MIMEText('Python SMTP 邮件发送测试', 'plain', 'utf-8')
message['From'] = Header("From测试",'utf-8')
message['To'] =  Header("To测试", 'utf-8')

subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')

try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25)    # 25 为 SMTP 端口号
smtpObj.login(mail_user,mail_pass)
smtpObj.sendmail(sender, receivers,
message.as_string())
print "邮件发送成功"
except smtplib.SMTPException:
print "Error: 无法发送邮件"


这样就成功的完成了邮件的发送。注意:使用的sender和receivers 都需要在对应的邮箱设置中开启SMTP服务,否则发送不会成功。

References:

菜鸟教程-Python教程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐