CTFd/utils.py中,smtp邮件服务器鉴权的函数为:
def get_smtp(host, port, username=None, password=None, TLS=None, SSL=None):
smtp = smtplib.SMTP(host, port)
smtp.ehlo()
if TLS:
smtp.starttls()
smtp.ehlo()
smtp.login(username, password)
return smtp
使用了smtplib.SMTP类,但是如果邮件服务器使用了SSL,则需要使用smtplib.SMTP_SSL类:
def get_smtp(host, port, username=None, password=None, TLS=None, SSL=None):
if SSL:
smtp = smtplib.SMTP_SSL(host, port)
smtp.ehlo()
elif TLS:
smtp = smtplib.SMTP(host, port)
smtp.ehlo()
smtp.starttls()
smtp.ehlo()
smtp.login(username, password)
return smtp