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

13 投票
2 回答
24518 浏览
提问于 2025-04-17 12:42

这是我在我的虚拟私人服务器(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

但不幸的是,返回了这个信息!: SMTP AUTH扩展不被服务器支持。

在我安装了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

但是在安装了Python 2.4的VPS上,没有SMTP_SSL()这个功能,返回的信息是'module'对象没有属性'SMTP_SSL'

我还尝试在VPS上升级我的Python,但结果是把整个Python搞坏了,这意味着Python完全不能用了。

2 个回答

0

请问SMTP.starttls()这个功能可用吗?你还可以这样做,比如:

def mail(receiver,Message):
    import smtplib
    try:
        s=smtplib.SMTP()
        s.connect("smtp.gmail.com",587)
        s.starttls()
        s.login("email@gmail.com", "password")
        s.sendmail("email@gmail.com", receiver, Message)
    except Exception,R:
            return R
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

撰写回答