Я редактирую электронное письмо, получая его и редактируя. полученную копию, записывая ее обратно с тем же идентификатором потока (хотя Gmail назначает новый идентификатор) и удаляя электронное письмо с исходным идентификатором, поэтому остается только измененная копия в том же месте, где находился оригинал. .
Но когда я пытаюсь добавить гиперссылку и просмотреть конечный результат в веб-интерфейсе Gmail, она неактивна, и в функции gmail show original я вижу следующее:
>
Код: Выделить всё
[url=http://testurl.com]
[code]fromg = service.users().messages().get(userId='me', id=response['id'], format='raw').execute()
unenc = base64.urlsafe_b64decode(fromg['raw']).decode('utf-8')
gmmsg = email.message_from_string(unenc)
for part in gmmsg.walk():
if part.get_content_type() == 'text/html':
print(part)
Я также пробовал без использования BeautifulSoup (вставка тегов привязки вручную) на случай, если он вводил что-то странное, но это не имело никакого значения.
Если кто-нибудь знает, что заставляет Gmail искажать эти сообщения при просмотре или пересылке из веб-интерфейса Gmail. (но не делать этого, когда к сообщению обращаются через API), вся помощь будет очень признательна.
Изменить: проблема не очевидна при простом html, составленное в веб-интерфейсе Gmail — к этому электронному письму может быть добавлена ссылка с помощью приведенного выше кода без искажений. Однако более сложные электронные письма в формате HTML, полученные от наших партнеров (которые я изначально тестировал), действительно демонстрируют эту проблему.
Простое электронное письмо, которое работает, имеет Content-Type: text/html; charset="UTF-8", тот из партнерского бизнеса, который не работает, имеет Content-Type: text/html; charset=UTF-8\nContent-Transfer-Encoding: quote-printable, а также выглядит странно там, где вы ожидаете увидеть знаки равенства в содержимом html, т.е. . Не уверен, что это часть проблемы. Попробовал записать мою ссылку как . Проверьте текст[/url], чтобы имитировать его, но, хотя он отображался так, как написано в «Показать оригинал», он все равно не привел к созданию интерактивной ссылки.
Подробнее здесь: https://stackoverflow.com/questions/791 ... n-existing