首页 > 解决方案 > Python3 使用 Smtplib [Yandex] 发送电子邮件

问题描述

我正在尝试使用 yandex 发送电子邮件,但我的功能不起作用。它只是永远等待,也没有错误。这是我的功能:

def send_emails(title,msg):
    server = smtplib.SMTP('smtp.yandex.com.tr:465')
    server.ehlo()
    server.starttls()
    server.login(yandex_mail,yandex_pass)
    message = 'Subject: {}\n\n{}'.format(title,msg)
    server.sendmail(yandex_mail,send_to_email,message)
    server.quit()
    print('E-mails successfully sent!')

send_emails('Test Mail', 'Yes its a test mail!')

标签: pythonpython-3.xsmtpsmtp-auth

解决方案


我认为你的问题在这里:

server = smtplib.SMTP('smtp.yandex.com.tr:465')

您需要使用smtplib.SMTP_SSL因为与SSL docs的连接是安全的,还smtplib.SMTP_SSL可以获得许多参数,第一个是host第二个是port和其他参数,但是您现在只需要这两个,您需要分别给出hostport,试试这个

def send_emails(title,msg):
    server = smtplib.SMTP_SSL('smtp.yandex.com.tr', 465)
    ...

推荐阅读