如何在python中使文本可单击
如何使文本可点击如何在python中使文本可单击,python,python-3.x,python-2.7,jython-2.7,Python,Python 3.x,Python 2.7,Jython 2.7,如何使文本可点击 class ComplainceServer(): def __init__(self, jira_server, username, password, encoding='utf-8'): if jira_server is None: error('No server provided.') #print(jira_server) self.jira_server = jira_server
class ComplainceServer():
def __init__(self, jira_server, username, password, encoding='utf-8'):
if jira_server is None:
error('No server provided.')
#print(jira_server)
self.jira_server = jira_server
self.username = username
self.password = password
self.encoding = encoding
def checkComplaince(self, appid, toAddress):
query = "/rest/api/2/search?jql=issuetype = \"Application Security\" AND \"Prod Due Date\" < now()
request = self._createRequest()
response = request.get(query, contentType='application/json')
# Parse result
if response.status == 200 and action == "warn":
data = Json.loads(response.response)
print "#### Issues found"
issues = {}
msg = "WARNING: The below tickets are non-complaint in fortify, please fix them or raise exception.\n"
issue1 = data['issues'][0]['key']
for item in data['issues']:
issue = item['key']
issues[issue] = item['fields']['summary']
print u"* {0} - {1}".format(self._link(issue), item['fields']['summary'])
print "\n"
data = u" {0} - {1}".format(self._link(issue), item['fields']['summary'])
msg += '\n'+ data
SOCKET_TIMEOUT = 30000 # 30s
email = SimpleEmail()
email.setHostName('smtp.com')
email.setSmtpPort(25)
email.setSocketConnectionTimeout(SOCKET_TIMEOUT);
email.setSocketTimeout(SOCKET_TIMEOUT);
email.setFrom('R@group.com')
for toAddress in toAddress.split(','):
email.addTo(toAddress)
email.setSubject('complaince report')
email.addHeader('X-Priority', '1')
email.setMsg(str(msg))
email.send()
def _createRequest(self):
return HttpRequest(self.jira_server, self.username, self.password)
def _link(self, issue):
return '[{0}]({1}/browse/{0})'.format(issue, self.jira_server['url'])
我希望issueid是一个嵌入式链接
目前,电子邮件发送方式如下:
MT-4353(https://check.com/login/browse/MT-4353) - Site Sc: DM isg_cq5
但是我想要
[MT-4353]
作为URL的超链接https://check.com/login/browse/MT-4353
首先,您需要将电子邮件编码为html。我不熟悉你正在使用的图书馆,所以我不能给出一个例子
我用html语法替换了您的一段代码,只是为了说明您打算使用html语法在电子邮件中创建可点击链接
msg = "<p>WARNING: The below tickets are non-compliant in fortify, please fix them or raise exception.</p>"
issue1 = data['issues'][0]['key']
for item in data['issues']:
issue = item['key']
issues[issue] = item['fields']['summary']
data = u"<a href='{0}'>{1}</a>".format(self._link(issue), item['fields']['summary'])
msg += '<br />'+ data
msg=“警告:以下票据在fortify中不符合要求,请修复它们或引发异常。”
issue1=数据['issues'][0]['key']
对于数据['issues']中的项目:
问题=项目['key']
问题[问题]=项目['fields']['summary']
数据=u“。格式(自链接(发布),项目['fields']['summary'])
msg+='
'+数据
以后,请仔细提问,因为你的题目并没有问题,也不能说明你的真正意思。你也有拼写错误:Compliant
哦,我错过了
self.\u link(问题)
没有返回正确链接的要点。它返回MT-4353(https://check.com/login/browse/MT-4353)
因此您需要提取括号之间的链接部分。我建议使用正则表达式。对不起,它将正确设置问题的格式,但仍将其作为普通文本。这是我现在看到的输出:拦截器:下面的票证在fortify中不兼容弱加密
MT-3196这里是代码现在的样子:msg=“\nBlocker:下面的票证在fortify中不兼容\n“issue1=数据['issues'][0]['key']对于数据中的项目['issues']:issue=项目['key']问题[issue]=item['fields']['summary']打印u“*{0}-{1}”。格式(self.\u链接(发布),item['fields']['summary'])打印“\n”linking=“”+str(发布)data=u“-{2}”。格式(链接,发布,item['fields']['summary'])msg+=”
+dataOk,因此,现在您需要在SimpleMail实例上找到一个将您的主体设置为html内容的方法。从哪个模块导入SimpleMail?从org.apache.commons.mail导入EmailException,SimpleMail,HtmlEmail这是来自以下内容的导入语句:公共电子邮件setMsg(字符串msg)抛出EmailException{if(EmailUtils.isEmpty(msg)){抛出新的EmailException(“提供的消息无效”);}else{this.setTextMsg(msg);StringBuffer htmlMsgBuf=新的StringBuffer(msg.length()+”“.length()+”“.length());htmlMsgBuf.append(“”).append(msg.append(“”);this.sethtmlmsgmsg(htmlMsgBuf.toString());返回此;}”
msg = "<p>WARNING: The below tickets are non-compliant in fortify, please fix them or raise exception.</p>"
issue1 = data['issues'][0]['key']
for item in data['issues']:
issue = item['key']
issues[issue] = item['fields']['summary']
data = u"<a href='{0}'>{1}</a>".format(self._link(issue), item['fields']['summary'])
msg += '<br />'+ data