邮件配置,jira发送邮件报错

By admin in 美高梅手机版4858 on 2019年4月9日

jira发送邮件的报错

一.装置完jira后,配置发送邮件出错具体报错如下:

An error has occurred with sending the test email:
com.atlassian.mail.MailException: javax.mail.MessagingException: Exception reading response;
  nested exception is:
    java.net.SocketTimeoutException: Read timed out
    at com.atlassian.mail.server.impl.SMTPMailServerImpl.sendWithMessageId(SMTPMailServerImpl.java:225)
    at com.atlassian.mail.server.impl.SMTPMailServerImpl.send(SMTPMailServerImpl.java:162)
    at com.atlassian.jira.plugins.mail.webwork.SendTestMail.doExecute(SendTestMail.java:107)
    at webwork.action.ActionSupport.execute(ActionSupport.java:165)
    at com.atlassian.jira.action.JiraActionSupport.execute(JiraActionSupport.java:63)
    at webwork.interceptor.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:39)
    at webwork.interceptor.NestedInterceptorChain.proceed(NestedInterceptorChain.java:31)
    at webwork.interceptor.ChainedInterceptor.intercept(ChainedInterceptor.java:16)
    at webwork.interceptor.DefaultInterceptorChain.proceed(DefaultInterceptorChain.java:35)
    at webwork.dispatcher.GenericDispatcher.executeAction(GenericDispatcher.java:225)
.....
错误较多省略....
.....
Caused by: java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
    at java.net.SocketInputStream.read(SocketInputStream.java:170)
    at java.net.SocketInputStream.read(SocketInputStream.java:141)
    at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:124)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
    at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:92)
    at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2349)
    ... 256 more

 二.排查方法

(壹)网上检索的解决办法中山高校部分都未有用,好多都是利用果壳网1陆叁信箱做的配置,而本人使用的邮箱是腾讯集团邮箱配置,测试一直发送不了,上边是第二个报错新闻

AuthenticationFailedException: 535 Error: authentication failed

以此张冠李戴主假使小编太大意,未有布置发送的邮件密码,前边添加密码后这一个荒唐解决。

(二)第3个报错音信

  不幸的是, 没有连接是唯恐的。审查以下错误并校订:

  • SocketTimeoutException: Read timed out

那边首借使端口难题,为四陆五,测试报错,截图如下:

美高梅手机版4858 1

 

 在那里修改端口成功化解,端口号能够是贰5,也足以是5捌七,就是465会报错。

 



由于邮箱发送的邮箱账号更换,所以重复测试。结果直接出错,要不便是请求超时,要不正是未授权。

那壹章真的好多坑,分成几块来写
1.以测试Flask_mail为目的
贰.狗书代码实战
用目录来看本片小说更加好,markdown的目录效率很棒

本文首要内容:

  • 1.jira邮件服务器的配备。

用smtp


壹.jira邮件服务器的铺排。

发轫的时候,端口使用4九5,结果是伸手超时。

邮件配置,jira发送邮件报错。测试环境:

壹.一.jira的邮件设置必须由系统一管理理员举行操作,其他用户未有操作此部分的权能。邮件设置的入口位于【系统>电邮】,如图1.1。

美高梅手机版4858 2

图一.1 邮件设置的输入位于【系统>电邮】

后来改成25,结果是未授权。

  • windows10
  • python3.5
一.二.点击“配置”实行邮件服务器的设置,如图一.贰。

美高梅手机版4858 3

图1.二 点击“配置”举办邮件服务器的设置

再后来听人说,有八个门类有用到合营社QQ发邮件的,然后过去看,最开头也尚未运营,因为本地的SQL
Express暗许是合贰为一的,改的话,还得去改config,懒得改。就径直看代码了。


一.3.点击“配置”后跳转到页面,如图一.3。

美高梅手机版4858 4

图1.3 点击“配置”后跳转到页面

结果代码看了半天,也没来看哪些不一样来。也就密码是用的MD伍加密,再解密。

参考链接

segment-测试用例
blog-狗书中环境变量的坑
新浪-对狗书记录相比较健全的一篇
很棒的总计


一.4.点击“配置三个新的 SMTP电邮服务器”,如图1.四。

美高梅手机版4858 5

图壹.四 点击“配置一个新的 SMTP电邮服务器”

实在非常,就改了地面配置,运营起来查看了。

Flask-Mail 发送邮件的关键步骤:

  • 安顿 app 对象的邮件服务器地址,端口,用户名和密码等
  • 始建多个 Mail 的实例:mail = Mail(app)
  • 制造二个 Message 信息实例,有多个参数:邮件标题、发送者和接收者
  • 创建邮件内容,假如是 HTML 格式,则选择
  • msg.html,倘诺是纯文本格式,则应用 msg.body
  • 最终调用 mail.send(msg) 发送音信
壹.五.点击“配置”举行邮件服务器的装置,如图1.5。

美高梅手机版4858 6

图壹.五 点击“配置1个新的 SMTP电邮服务器”后跳转到的页面

爆冷门意识密码解码之后,竟然和团结那边获得的不一样。于是替换了一晃探望,当然port=4玖5是丰富的,会晚点

测试Flask_mail发送邮件

点此为原来的书文出处,以下为部分引用


1.简介

给用户发送邮件是 Web
应用中最常见的职务之1,比如用户注册,找回密码等。Python 内置了一个smtplib 的模块,可以用来发送邮件,那里大家利用
Flask-Mail,是因为它能够和 Flask 集成,让大家更有益于地促成此意义。


2.安装

# pip
$ pip install Flask-Mail

# 或下载源码安装
$ git clone https://github.com/mattupstate/flask-mail.git
$ cd flask-mail
$ python setup.py install

三.出殡和埋葬邮件

壹.陆.对SMTP服务器的“名称”、“来自的电邮地址”、“电邮前缀”实行安装,如图一.6。

美高梅手机版4858 7

图一.六 对SMTP服务器的“名称”、“来自的电邮地址”、“电邮前缀”实行安装

port=二五依然干脆不设置,发送成功了

SMTP端口

Flask-Mail 连接到简单邮件传输协议 (Simple Mail Transfer Protocol,
SMTP) 服务器,并把邮件交给那么些服务器发送。那里以 QQ
邮箱为例,介绍怎么着简单地发送邮件。以前,大家要求领会 QQ
邮箱的服务器地址和端口是怎么

[

美高梅手机版4858 8

image.jpg

一.7.对SMTP服务器主机的设置,包含“协议”、“名称”、“STMP端口号”、【用户email的“账号”、“密码”】“”进行设置,如图一.7。

美高梅手机版4858 9

图1.七 对SMTP服务器主机的装置

转了一大圈,结果竟然是密码错误

POP和IMAP,SMTP区别

POP和IMAP的区分在于:POP的操作,不会联合到服务器上,也正是不会潜移默化到服务器,而IMAP是和服务器同步的。
SMTP 是出殡和埋葬邮件的服务器。

测试代码

# -*- coding: utf-8 -*-

from flask import Flask
from flask_mail import Mail, Message
import os

app = Flask(__name__)

app.config['MAIL_SERVER'] = 'smtp.qq.com'  # 邮件服务器地址
app.config['MAIL_PORT'] = 25               # 邮件服务器端口
app.config['MAIL_USE_TLS'] = True          # 启用 TLS
app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME') or 'me@example.com'
app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD') or '123456'

mail = Mail(app)

@app.route('/')
def index():
    msg = Message('Hi', sender='me@example.com', recipients=['he@example.com'])
    msg.html = '<b>Hello Web</b>'
    # msg.body = 'The first email!'
    mail.send(msg)
    return '<h1>OK!</h1>'

if __name__ == '__main__':
    app.run(host='127.0.0.1', debug=True)

拓展要求的修改后,在命令行用python打开那个文件就足以开始展览测试了
急需专注的几点如下

1.八.对壹.陆、一.7操作步骤填写完结后,点击“Test Connection”实行邮件的连日测试,如图1.捌。

美高梅手机版4858 10

图1.捌 对1.陆、1.七操作步骤填写达成后,点击“Test Connection”

mail from address must be same as authorization
user那新闻提醒有以下三种:

此处的局地坑

  • qq邮箱的smtp端口为 25
  • MAIL_PASSWO途达D最佳用邮箱里转变的授权码,可在”邮箱- 设置- 账户”
    内查看
  • from flask_mail import Mail, Message 注意分寸写
  • sender 要和app.config[‘MAIL_USERNAME’]一致
一.九.点击“Test Connection”后,jira页面会展现“连接测试成功”的晋升,如图壹.玖-1。

美高梅手机版4858 11

图一.九-1 jira页面会展现“连接测试成功”的唤起

一.玖-二 点击“添加”提交保存SMTP配置新闻到系统中,如图一.九-贰。

美高梅手机版4858 12

图1.玖-贰 点击“添加”提交保存SMTP配置音信到系统中

一.玖-三 点击“添加”后,跳转到的页面,如图一.九-三。

美高梅手机版4858 13

图一.九-3 点击“添加”后,跳转到的页面

1.九-4 点击“发送测试邮件”,如图一.9-四。

美高梅手机版4858 14

图一.玖-四 点击“发送测试邮件”

一.九-5 点击”发送测试邮件”后,页面跳转的页面,如图一.9-5。

美高梅手机版4858 15

图一.九-伍 点击”发送测试邮件”后,页面跳转的页面

1.9-6 点击“发送”,如图1.9-6。

美高梅手机版4858 16

图1.9-6 点击“发送”

一.玖-七点击“发送”后,页面“电邮日志”部分有照应的发送成功消息提示,如图1.九-7。

美高梅手机版4858 17

图1.玖-7 点击“发送”后,页面“电邮日志”部分有相应的出殡成功音信提醒

一.九-8 登录1二陆信箱查收到如下邮件,则表明邮件连接测试成功,如图一.玖-八。

美高梅手机版4858 18

图1.9-8 登录1二陆信箱查收到有JIRA大旨的邮件

说明:个人觉得判断SMTP是否配置成功关键还是看步骤1.9-8是否有邮件  收到。步骤1.9-1这种页面提示,不是很“靠谱”。

1.未开启pop3或者smtp

狗书代码实战

通过敲测试代码大家曾经基本精晓Flask-mail的着力工作方式了,单是在敲狗书里那一章代码时,依旧会遇见不少坑

2.账号给错了

环境变量

书中提交设置环境变量方法如下

# Mac OS X 中使用bash,那么可以按照下面的方式设定这两个变量:
(venv) $ export MAIL_USERNAME=<Gmail username>
(venv) $ export MAIL_PASSWORD=<Gmail password>
# 微软Windows 用户可按照下面的方式设定环境变量:
(venv) $ set MAIL_USERNAME=<Gmail username>
(venv) $ set MAIL_PASSWORD=<Gmail password>

笔者有个别表述不清楚,实际上在windows中

# cmd下
set MAIL_USERNAME='xxxxx@qq.com'  #此处有疑问,详见后文
# cmd下查看环境变量直接输入set即可
set
# powershell中
$env:MAIL_USERNAME='xxxxx@qq.com'

注意:那中艺术设置的是权且环境变量,那象征重新打开cmd窗口就要求再行设置临时环境变量

环境变量那里有坑, 注意
不设置环境变量,直接在代码中配备用户名和密码不出新难点

app.config['MAIL_USERNAME'] = 'my_email@qq.com'
app.config['MAIL_PASSWORD'] = 'password'

可是如若在环境变量中配置用户名和密码,在代码中读取就会报错

#配置环境变量
$set MAIL_USERNAME = 'my_email@qq.com'
$set MAIL_PASSWORD = 'password'
#代码
app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')
app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')
#运行报错

  raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (535, b'Error: \xc7\xeb\xca\xb9\xd3\xc8\xa8\xb5\xc7\xc2\xbc\xa1\xa3\xcf\xea\xc7\xe9\xc7\xeb\xbf\xb4: http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256')

报错应该是说验证码出现难题,就是密码错误了。
然则不利用环境变量密码就正确那就很想获得了
遂在代码中进入

#一个读取环境变量,一个直接读取
app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')
app.config['MAIL_PASSWORD'] = 'password'

#在主函数中加入打印语句
@app.route('/', methods=['GET', 'POST'])
def index():
    form = NameForm()
    print(app.config['MAIL_USERNAME'])#打印
    print(app.config['MAIL_PASSWORD'])#打印

#打印结果如下
'my_email@qq.com'  #带引号
password        #无引号

察觉差异后遂在环境变量配置中撤销了引号,终于不负众望运转。

$set MAIL_USERNAME = my_email@qq.com
$set MAIL_PASSWORD = password

唯独这种场合周围只有用授权码美高梅手机版4858,当密码才会冒出难题。因为本身看了56篇作品外人都不曾遇见那么些标题,而且也很少有人提问,所以笔者要么封存了加引号的记录。


关于自个儿那边,那正是密码错误,那感觉真是坑爹。一贯觉得是代码哪个拿错了,也许是邮箱里面配备没弄好,结果依然是密码错误

坑已点完,项目实战

那服务器复苏解析能或无法确切点啊!!!

1.安装

(venv) $ pip install flask-mail

关于那密码,笔者倒是有意识说qq号的密码和信箱的密码是不等同的,但是壹般景色,根本不会去改邮箱的密码,哪儿知道依旧是不平等的。

2.Flask-Mail配置 qq 邮箱

由于Gmail在境内无法动用,我们用qq邮箱替代

import os
# 原有内容
app.config['MAIL_SERVER'] = 'smtp.qq.com'
app.config['MAIL_PORT'] = 25
app.config['MAIL_USE_TLS'] = True
app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME')
app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD')

~~尽管自身直接在邮箱登录页面登不上去,不过终究没悟出那么些难题,因为换了一个记名入口就进入了。

三.安顿环境变量

set MAIL_USERNAME = 'your-email@qq.com'
set MAIL_PASSWORD = 'lssokgzndbfsfdjj'
set FLASK_ADMIN = 'admin@gmail.com' #管理员邮箱,也是项目中的接收者邮箱

如上所述,就是邮箱密码和qq的密码存在不等同的情事,要是采取邮件发送代码,必须在邮箱登录页面有限支撑那几个邮箱能登录进去,才能早先测试邮件发送。

4.在hello.py中添加电子邮件帮助

邮件发送函数

from flask_mail import Message

app.config['FLASKY_MAIL_SUBJECT_PREFIX'] = '[Flasky]'#邮件主题前缀
app.config['FLASKY_MAIL_SENDER'] = 'Flasky Admin <flasky@example.com>'  #这个是发件人,而<>前面的内容,实际上就相当于昵称的作用
def send_mail(to, subject, template, **kwargs):
    msg = Message(app.config['FLASKY_MAIL_SUBJECT_PREFIX'] + subject, sender=app.config['FLASKY_MAIL_SENDER'], recipients=[to])
    msg.body = render_template(template + '.txt', **kwargs)
    msg.html = render_template(template + '.html', **kwargs)
    mail.send(msg)

app.config[‘FLASKY_MAIL_SUBJECT_PREFIX’] 发送的邮件核心的前缀
app.config[‘FLASKY_MAIL_SENDER’]
邮件发送者,此人要在你安插过的app.config[‘MAIL_USERNAME’] 里

假如提交的用户是新用户,则给管理员发送一封邮件提示

# 原有内容
app.config['FLASKY_ADMIN'] = os.environ.get('FLASKY_ADMIN')
# 原有内容
@app.route('/', methods=['GET', 'POST'])
def index():
    form = NameForm()
    if form.validate_on_submit():
        user = User.query.filter_by(username=form.name.data).first()
        if user is None:
            user = User(username=form.name.data)
            db.session.add(user)
            session['known'] = False
            if app.config['FLASKY_ADMIN']:
                send_mail(app.config['FLASKY_ADMIN'], 'New User', 'mail/new_user',  user=user)
    else:
        session['known'] = True
        session['name'] = form.name.data
        return redirect(url_for('index'))
    return render_template('index.html', form=form, name=session.get('name'), known=session.get('known', False))

此间书中绝非提到的是
亟需在templates下创制mail子文件夹存放邮件模板。

# templates/mail/new_user.txt
User {{ user.username }} has joined.
# templates/mail/new_user.html
User <b>{{ user.username }}</b> has joined

集团QQ的话,pop三 ,IMAP,STMP的打开是在设置-客户端这多少个上边安装的

5.异步发送电子邮件

当在发送电子邮件时,可窥见先后有停滞现象,表将来浏览器上正是刷新按钮在转,那时就是send_mail()函数正在举行。为了幸免那种不供给的推移,能够采纳异步的点子执行邮件发送函数。
修改hello.py:

from threading import Thread

def send_async_email(app, msg):
    with app.app_context():
        mail.send(msg)

def send_mail(to, subject, template, **kwargs):
    msg = Message(app.config['FLASKY_MAIL_SUBJECT_PREFIX'] + subject, sender=app.config['FLASKY_MAIL_SENDER'], recipients=[to])
    msg.body = render_template(template + '.txt', **kwargs)
    msg.html = render_template(template + '.html', **kwargs)
    thr = Thread(target=send_async_email, args=[app, msg])
    thr.start()
    return thr

有关平时的,则都以在设置-账户下设置的

END

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有