Как сделать текст кликабельным в питоне
Как сделать текст кликабельным?
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)
так что вам нужно извлечь часть ссылки между скобками. Я предлагаю регулярное выражение.