在学习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教程