Как сделать текст кликабельным в питоне

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

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)

Я хочу, чтобы Issid был встроенной ссылкой.

в настоящее время электронное письмо отправляется, как показано ниже:

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 ответ

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

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

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

Другие вопросы по тегам