CID ссылки не присутствуют в Gmail после отправки электронной почты - PullRequest
1 голос
/ 08 ноября 2019

Я тестирую систему уведомлений по электронной почте с python и selenium с mailgun API.

все работает хорошо, за исключением того, что изображения не отображаются в gmail, я обнаружил, что в gmail есть проблемы со ссылками на внешние изображения.

Так что в настоящее время я прикрепляю все изображения в самом письме и отправляю с ссылками CID, чтобы изображения отображались в html. В моем конце HTML показывает нормально с cid, но когда электронное письмо отправлено, src CID удаляется, больше не присутствует.

код селена

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

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

    r = requests.get(imglink, stream=True)
    if r.status_code == 200:
        with open(str(imgN)+'.jpg', 'wb') as f:
            r.raw.decode_content = True
            shutil.copyfileobj(r.raw, f)

    attachlist.append(('attachment', open(str(imgN)+'.jpg', 'rb')))

    driver.execute_script('arguments[0].setAttribute("src","cid:{}");'.format(str(imgN)+'.jpg'), imgattr)
    #driver.execute_script('arguments[0].setAttribute("alt", "SpaceImage");', imgattr)
    driver.execute_script('arguments[0].setAttribute("style", "display: block");', imgattr)
    driver.execute_script('arguments[0].removeAttribute("load_src");', imgattr)

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

resp = "<<!DOCTYPE html><html><head><title>Title of the document</title></head><body>"+str(resp)+"</body></html>"

r = requests.post(
"https://api.mailgun.net/v3/mysandbox.mailgun.org/messages",
auth=("api", "my-key"),
files=attachlist,
data={"from": "mailgun@mysandbox.mailgun.org",
"to": ["recipient1@gmail.com", "recipient@gmail.com"],
"subject": "the subject",
"text": "The text",
"html": resp}
)

здесь я получаю таблицу, меняю src изображений с помощью javascript, затем заключаю эту таблицу в html и отправляю ее со всеми вложениями.

источник изображений перед отправкой по электронной почте

<img src="cid:7545abfbeec84eff98a82a3bb79baea1.jpg" border="0" name="img_preview" width="72" style="display: block">

enter image description here

Вот это после того, как я отправляюэлектронная почта, src уходит в Gmail

<img name="m_-3792568815060333898_img_preview" style="display:block" width="72" border="0">

enter image description here

см. вложения есть, но изображение src исчезает в gmailкоторый ссылается на CID

enter image description here

Что здесь происходит? Что я делаю не так?

Спасибо за чтение, Желаю вам чудесного дня:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...