在网上看到python SMTP发送邮件的教程,打算自己来试一下。
SMTP(simple Mail Transfer PEotocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。它的语法一般如下
import smtplib
smtpObj = smtplib.SMTP([host[,port[,local_hostnamr]]])
其中host为服务器主机,port为服务器端口号,一般为25.
在使用sendmail方法发送邮件时,语法显示如下:
#msg中为邮件内容显示,以及附件显示
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])
在后续的实例中,所需在mac上配置sendmail。在mac os下有msmtp,其功能与smtp相似。
采用廖雪峰老师的代码,显示如下:
from email.mime.text import MIMEText
msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')
# 输入Email地址和口令:
from_addr = input('From: ')
password = input('Password: ')
# 输入SMTP服务器地址:
smtp_server = input('SMTP server: ')
# 输入收件人地址:
to_addr = input('To: ')
import smtplib
server = smtplib.SMTP(smtp_server, 25) # SMTP协议默认端口是25
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()
但是却出现了如下的错误:
smtplib.SMTPServerDisconnected: Connection unexpectedly closed
网上查阅之后,有人说是因为端口号错误,并建议修改为465或587。修改之后发现问题并没有得到解决。
查阅其他人成功的代码之后发现,多数采用了