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

2017-11-06 23:28:53 +08:00
 DeHoo

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

  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 = '111111@qq.com',
    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='111111@qq.com',recipients=['22222@qq.com'])
	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;
  }
}
7131 次点击
所在节点    Python
10 条回复
infun
2017-11-06 23:35:33 +08:00
qq 邮箱的密码是特殊设置的,不是登录密码
& 即便成功了,发几份邮件之后就提示垃圾邮件了
DeHoo
2017-11-06 23:39:47 +08:00
@infun 在本地上测试了,发了五封都是成功的,而且没有提示垃圾邮件!密码是授权码,不是密码,我设置好了的!
oyhw92
2017-11-06 23:45:39 +08:00
看看服务器运营商是不是封锁了 25 端口,google cloud 就封了,自家 gmail 都不行,只能找第三方邮件平台
DeHoo
2017-11-06 23:46:54 +08:00
@oyhw92 这个没想到,去问问看!多谢
DeHoo
2017-11-06 23:57:13 +08:00
@oyhw92 搞了两天,原来正是你说的情况,哈哈,太感谢了,现在都成功了!
lt0136
2017-11-07 00:10:40 +08:00
现在各种云都禁止 25 端口了
DeHoo
2017-11-07 08:49:20 +08:00
@lt0136 是的,现在买云服都要先看看有没有封掉 25 端口,幸好我买服务器这家可以自己解封!
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
2017-11-07 10:50:58 +08:00
@DeHoo 垃圾邮件评定的最重要指标是单位时间的发信频度,而不是总量,你一分钟群发一百封,连续发半小时试试。
TruMps
2019-07-29 17:39:04 +08:00
换 587 端口~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/404120

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX