python 2.4中的服务器不支持SMTP AUTH扩展

Ham*_*daq 13 python linux smtp vps python-2.4

这是我在我的VPS主机中提供python 2.4的常规代码

def mail(receiver,Message):
    import smtplib
    try:
        s=smtplib.SMTP()
        s.connect("smtp.gmail.com",465)
        s.login("email@gmail.com", "password")
        s.sendmail("email@gmail.com", receiver, Message)
    except Exception,R:
            return R
Run Code Online (Sandbox Code Playgroud)

但不幸的是返回此消息!: SMTP AUTH extension not supported by server.

在我安装python 2.7的计算机中,我找到了解决方案并且它的工作非常好,这里是这段代码:

def mail(T,M):
    import smtplib
    try:
        s=smtplib.SMTP_SSL()
        s.connect("smtp.gmail.com",465)
        s.login("xxxxx@gmail.com","your_password")
        s.sendmail("xxxxx@gmail.com", T, M)
    except Exception,R:
            print R
Run Code Online (Sandbox Code Playgroud)

但是在安装了python 2.4的VPS中没有SMTP_SSL()并返回此消息 'module' object has no attribute 'SMTP_SSL'

此外,我试图在VPS升级我的python,但发生的事情是损坏整个python,这意味着python根本不起作用.

Ham*_*daq 15

伙计们,谢谢我找到了解决方案,这是解决方案=)

def mail(receiver,Message):
    import smtplib
    try:
        s=smtplib.SMTP()
        s.connect("smtp.gmail.com",465)
        s.ehlo()
        s.starttls()
        s.ehlo()
        s.login("email@gmail.com", "password")
        s.sendmail("email@gmail.com", receiver, Message)
    except Exception,R:
            return R
Run Code Online (Sandbox Code Playgroud)

  • 您不需要进行第一次s.ehlo()调用.s.starttls()会为你调用它.我在2.7中证实了这一点,2.4文档听起来像它在该版本中的行为方式相同. (2认同)