如何在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