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
DeHoo
V2EX  ›  Python

flask_mail 在本地测试能成功发邮件,但是弄上服务器就一直提示“error: [Errno 110] Connection timed out”错误,服务器环境是 nginx+flask+sqlalchemy.代码放在内容区里!

  •  
  •   DeHoo · 2017-11-06 23:28:53 +08:00 · 7202 次点击
    这是一个创建于 2580 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位大大,是不是我的服务器需要配置什么端口之类的?搞了两天了,无法搞好!

    1. 服务器上的 INPUT 端口我只开放了 80,22,21,其他都没有开放。
    2. OUTPUT 和 FORWARD 上我都是 ACCEPT

    代码如下:

    from flask import Flask
    # from run_celery import make_celery
    # from celery import platforms
    from flask_mail import Mail,Message
    
    app = Flask(__name__)
    app.config.update(
        # CELERY_BROKER_URL='redis://localhost:6379/0',
        # CELERY_RESULT_BACKEND='redis://localhost:6379/1',
        DEBUG = True,
        MAIL_SERVER='smtp.qq.com',
        MAIL_PROT='25',
        # MAIL_USE_SSL = True,
        MAIL_USE_TLS = True,
        MAIL_USERNAME = '[email protected]',
        MAIL_PASSWORD = 'rkuynjxxxxxpqicfc',
        MAIL_DEBUG = True
    )
    # celery = make_celery(app)
    mail = Mail(app)
    
    @app.route('/')
    def index():
    	msg = Message("This is only test Mail",sender='[email protected]',recipients=['[email protected]'])
    	msg.body = "This is my first Mail."
    	mail.send(msg)
    	print('Mail send OK')
    	return 'sent'
    
    if __name__ == '__main__':
    	app.run()
    

    以下是 nginx 的配置:

    server {
      listen 80;
      server_name www.demo.com;
      access_log /wwwlogs/www.demo.com_nginx.log combined;
      index index.html index.htm index.php;
      root /wwwroot/www.demo.com;
    
      location ~ .*\.(wma|wmv|asf|mp3|mmf|zip|rar|swf|flv|mp4)$ {
       valid_referers none blocked *.demo.com www.demo.com;
       if ($invalid_referer) {
          return 403;
        }
      }
      location / {
        try_files $uri @flask;
      }
      location @flask {
        proxy_set_header  X-real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:5000;
      }
      location ~ .*\.(bmp|swf|flv|mp4)$ {
        expires 30d;
        access_log off;
      }
      location ~ /\.ht {
        deny all;
      }
    }
    
    10 条回复    2019-07-29 17:39:04 +08:00
    infun
        1
    infun  
       2017-11-06 23:35:33 +08:00
    qq 邮箱的密码是特殊设置的,不是登录密码
    & 即便成功了,发几份邮件之后就提示垃圾邮件了
    DeHoo
        2
    DeHoo  
    OP
       2017-11-06 23:39:47 +08:00
    @infun 在本地上测试了,发了五封都是成功的,而且没有提示垃圾邮件!密码是授权码,不是密码,我设置好了的!
    oyhw92
        3
    oyhw92  
       2017-11-06 23:45:39 +08:00 via iPhone
    看看服务器运营商是不是封锁了 25 端口,google cloud 就封了,自家 gmail 都不行,只能找第三方邮件平台
    DeHoo
        4
    DeHoo  
    OP
       2017-11-06 23:46:54 +08:00
    @oyhw92 这个没想到,去问问看!多谢
    DeHoo
        5
    DeHoo  
    OP
       2017-11-06 23:57:13 +08:00
    @oyhw92 搞了两天,原来正是你说的情况,哈哈,太感谢了,现在都成功了!
    lt0136
        6
    lt0136  
       2017-11-07 00:10:40 +08:00 via Android
    现在各种云都禁止 25 端口了
    DeHoo
        7
    DeHoo  
    OP
       2017-11-07 08:49:20 +08:00
    @lt0136 是的,现在买云服都要先看看有没有封掉 25 端口,幸好我买服务器这家可以自己解封!
    cy97cool
        8
    cy97cool  
       2017-11-07 09:57:14 +08:00
    即使封了 25 端口也没关系吧 改用 SSL 的 465 端口或 587 端口即可
    https://kf.qq.com/faq/120322fu63YV130422nqIrqu.html

    对应的 flask 配置加一条 MAIL_USE_SSL = True
    TimePPT
        9
    TimePPT  
       2017-11-07 10:50:58 +08:00
    @DeHoo 垃圾邮件评定的最重要指标是单位时间的发信频度,而不是总量,你一分钟群发一百封,连续发半小时试试。
    TruMps
        10
    TruMps  
       2019-07-29 17:39:04 +08:00
    换 587 端口~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2570 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 04:30 · PVG 12:30 · LAX 20:30 · JFK 23:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.