用python给邮箱发邮件,问题,以及解决方法。

时间:2023-03-09 02:43:17
用python给邮箱发邮件,问题,以及解决方法。

模版

import  smtplib                                 #导入相关模块
from email.mime.text import MIMEText
from email.utils import formataddr
def mail():
ret="ok"
try:
msg = MIMEText("邮件内容","plain","utf-8")
msg["From"] = formataddr(["发件人",'发件人邮箱'])
msg["To"] = formataddr(["收件人",'收件人邮箱'])
msg["Subject"]="主题" server=smtplib.SMTP("smtp.qq.com",25)
#server.starttls()
#server.ehlo()
server.login("发件人邮箱","发件人密码")
server.sendmail("发件人邮箱",['收件人邮箱',],msg.as_string())
server.quit() except Exception,e:
ret =e
return ret
ret=mail()
print ret

加入try,except可以看到错误信息

当然编写完后会有几个问题。下面是我遇到的几个问题,并附上解决方案。

server=smtplib.SMTP("smtp.qq.com",25)
使用25端口报错
(530, 'Error: A secure connection is requiered(such as ssl). More information at http://service.mail.qq.com/cgi-bin/help?id=28')
端口号需要改成加密连接,smtp.qq.com,使用SSL,端口号465或587
用587端口后提示错误

(530, 'Must issue a STARTTLS command first.')

需要在

server=smtplib.SMTP("smtp.qq.com",587)
后面加上
server.starttls()

用465的话则需要将SMTP改成SMTP_SSL
server=smtplib.SMTP_SSL("smtp.qq.com",465)

至此,可正常发送邮件。

新手如有错误欢迎大神们指点。