V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
scott123
V2EX  ›  Python

django 发送邮件认证错误 但是使用 stmp 模块没有问题,怎么回事?

  •  1
     
  •   scott123 · 2016-08-02 22:10:42 +08:00 · 2199 次点击
    这是一个创建于 2844 天前的主题,其中的信息可能已经有所发展或是发生改变。

    使用 django 发邮件一直报认证错误 (535, 'Error: authentication failed'),但是用 stmp 模块登录发送邮件没有问题,使同一个账户,密码也使用一样的,但是用 django 发送的时候会报错怎么回事? stmp 代码如下,可以正常的发送

     msg['to'] = '[email protected]'
     msg['from'] = '[email protected]'
     msg['subject'] = 'receive or ship parts'
     try:
         server = smtplib.SMTP('smtp.163.com')
         server.login('[email protected]','xxxxx555')
         server.sendmail(msg['from'],msg['to'],msg.as_string())
         server.quit()
         print 'successfully'
     except Exception, e:
         print str(e)
    if __name__=='__main__':
     sendmail(item_list,meta_dict)
    

    django setting 代码如下:

    EMAIL_USE_TLS = True
    
    EMAIL_HOST = 'smtp.163.com'
    
    EMAIL_HOST_USER = '[email protected]'
    
    EMAIL_HOST_PASSWORD = 'xxxxx555'
    
    EMAIL_PORT = 25
    

    email 函数如下:

    template_html = get_template('email.html')
        context = Context({'user': user, 'other_info': info})
        if not user.e
        try:
            subject, from_email, to = 'hello world', '[email protected]', '[email protected]'
            text_content = 'This is an import message.'
            html_content = '<p>This is an <strong>important</strong> message.</p>'
            msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
            msg.attach_alternative(html_content, "text/html")
            msg.send()
            print 'sucessful'
        except Exception, e:
            print 'failed', e
    
    7 条回复    2016-11-05 16:37:50 +08:00
    julyclyde
        1
    julyclyde  
       2016-08-02 23:06:57 +08:00
    抓包看一下就知道了
    uniquecolesmith
        2
    uniquecolesmith  
       2016-08-02 23:16:53 +08:00
    SMTP 验证用的不是密码,是授权码
    SErHo
        3
    SErHo  
       2016-08-02 23:18:04 +08:00 via iPad
    猜测:直接发没有用 tls , Django 设置使用 tls 了,改成 False 试试呢?
    scott123
        4
    scott123  
    OP
       2016-08-02 23:26:47 +08:00
    @SErHo 已经试过设置 tls 为 False ,不管用。
    scott123
        5
    scott123  
    OP
       2016-08-02 23:31:37 +08:00
    @uniquecolesmith 即使是授权码也不对啊,我用的是 163 要求专门给客户端设置的密码,也不是邮箱密码,我也试过邮箱密码但是不行啊。
    KoleHank
        6
    KoleHank  
       2016-08-03 08:42:31 +08:00
    建议用个没有二次验证或授权码的邮箱,不要用 163 的
    或者用 163 的旧账户,我很早的邮箱账户开启 smtp 这些的没用授权码,那个时候还没有授权码一说,那一类账户应该能正常发送邮件的
    scott123
        7
    scott123  
    OP
       2016-11-05 16:37:50 +08:00
    找到原因了,重新设置一下单独 smtp 客户端密码就可以了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3677 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 10:32 · PVG 18:32 · LAX 03:32 · JFK 06:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.