Вставить HTML с изображением пути в Gmail с Python - PullRequest
1 голос
/ 06 ноября 2019

Я делаю систему уведомлений, которая отправляет электронные письма с html-таблицей с изображениями.

изображения хорошо отображаются на реальной странице. Я беру исходный код таблицы с селеном (меняя все относительные пути на полные пути)

    for attr in driver.find_elements_by_xpath('//table[@id="mainTable"]/tbody/tr[contains(@id, "cell_")]'):

        #gettin the image link

        imgattr = attr.find_element_by_xpath('.//td[4]/a[1]/img[1]')
        imglink = imgattr.get_attribute('src')

        #changing to full path and setting that with javascript

        driver.execute_script('arguments[0].setAttribute("src","{}");'.format(urljoin(root_url, imglink)), imgattr)
        driver.execute_script('arguments[0].setAttribute("width","{}");'.format('72'), imgattr)
        driver.execute_script('arguments[0].setAttribute("height","{}");'.format('54'), imgattr)

        #getting the element (table) again 
        #with image links changed to full path

        elem = driver.find_element_by_xpath('//table[@id="mainTable"]')
        resp = elem.get_attribute('innerHTML')

Теперь я использую api mailgun для отправки электронного письма

    r = requests.post(
    "https://api.mailgun.net/version/my domain name/messages",
    auth=("api", "my api key"),
    data={"from": "mailgun@mydomain",
    "to": ["recipient1@gmail.com", "recipient2@gmail.com"],
    "subject": "random subject",
    "html": resp})

электронная почта отправляется без проблем, но изображения не отображаются, их ссылки изменяются при отправке по электронной почте пример Actual Page enter image description here

Отправленный элемент проверки электронной почты, ссылки изменяются с исходного на пустой enter image description here

В основном изображение изменяется от этого:

<img src="https://p3.aleado.com/pic/?system=auto&amp;date=2019-11-07&amp;auct=243&amp;bid=70048&amp;number=1&amp;w=72" load_src="https://p3.aleado.com/pic/?system=auto&amp;date=2019-11-07&amp;auct=243&amp;bid=70048&amp;number=1&amp;w=72" border="0" name="img_preview" width="72">

На это:

<img src="https://ci6.googleusercontent.com/proxy/qQR9p1-B2oWM3V-bVJssDVajsvZN9irPqHctNMUr6jTsgKmuZFP30fcTB54a-wtpM_H6rL0K_Fz7huR4oMPVTISpvE7XSJkwwFbFMZc6B2yVviL28WMGzAXGzlso8RHgGTjxGwqGS7_XAQ=s0-d-e1-ft#https://p3.aleado.com/pic/?system=auto&amp;date=2019-11-07&amp;auct=243&amp;bid=70048&amp;number=1&amp;w=72" name="m_-9099380790990105554_img_preview" class="CToWUd" width="72" border="0">

Я пробовал Base64, но Gmail не поддерживает его и показывает пробелы на его месте

Что я делаюнеправильно здесь и как я могу вставить эти ссылки?

любые предложения будут полезны.

Заранее спасибо

1 Ответ

1 голос
/ 06 ноября 2019

Не думай, что ты делаешь что-то не так. По умолчанию Gmail загружает все изображения и размещает их на прокси-сервере. Когда изображения обслуживаются, это происходит быстрее, чем на серверах Gmail. Согласно Litmus, прокси-сервер впервые запущен в 2013 году.

Когда изображение кэшируется, оно загружается с исходного сервера и сохраняется напрокси-сервер. Последующие просмотры кэшированного изображения всегда будут отображаться с прокси-сервера, а не с исходного сервера, эффективно перенаправляя все загрузки изображений вместе со связанными данными отслеживания, которые идут с загрузкой изображения.

Выможете прочитать полную статью от Litmus здесь .

...