как сделать текст кликабельным в питоне - PullRequest
0 голосов
/ 13 февраля 2019

Как сделать текст кликабельным?

class ComplainceServer (): def init (self, jira_server, имя пользователя, пароль, кодировка = 'utf-8'): если jira_server равен None: ошибка ('Сервер не предоставлен.')

        #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'])

Это вызывающая функция.APPid и toAddress будут передаваться из другого интерфейса.

from Complaince import ComplainceServer

jira = ComplainceServer(jiraServer, username, password)

issues = jira.checkComplaince(appid, toAddress)

Я хочу, чтобы 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

1 Ответ

0 голосов
/ 21 февраля 2019

Во-первых, вам нужно закодировать вашу электронную почту как 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

В будущем, пожалуйста, задавайте свои вопросы осторожно, так как в вашем названии нет вопросов, которые не означают, что вы на самом деле имеете в виду.У вас также есть орфографические ошибки: Compl ia nt

О, я пропустил пункт self._link(issue) не вернув правильную ссылку.Возвращает MT-4353(https://check.com/login/browse/MT-4353), поэтому вам нужно извлечь часть ссылки между скобками.Я предлагаю регулярное выражение.

...