0

我的错。邮戳显然不支持内联图像。通过更改 smtp-mail 提供商解决。

我正在尝试使用 pylons 通过 TurboMail 发送电子邮件。

一切正常,除了在 html-content 中使用嵌入的图像。似乎每个图像的 Content-ID 标头都在途中丢失了。

这是我的代码:

def sendMail(to,subject,html_content,plain_content,images):
    from turbomail import Message as Mail
    mail = Mail(to=to,subject=subject)
    mail.plain = plain_content
    mail.rich = html_content

    for cid,path in images.iteritems():
        mail.embed(path,cid)

    mail.send()

在我的测试中,html内容是:

<html>
  <header/>
  <body>
  <h1>Send images using TurboMail</h1>
  <img src="cid:img0" />
 </body>
</html>

和图像字典:

{"img0":"path/to/img0"}
4

2 回答 2

0

当您同时传入文件名和 cid 时,TurboMail 会忽略cid 并使用文件的基本名称。我怀疑你的文件名有扩展名,而你的 cids 没有:

{"img0":"path/to/img0.png"}

如果是这样,图像将嵌入一个 cid ofimg0.png代替。

你可以传入一个打开的图像文件;TurboMail 将不会忽略该名称:

def sendMail(to,subject,html_content,plain_content,images):
    from turbomail import Message as Mail
    mail = Mail(to=to,subject=subject)
    mail.plain = plain_content
    mail.rich = html_content

    for cid,path in images.iteritems():
        mail.embed(open(path, 'rb'), cid)

    mail.send()

我会marrow.mailer改用;它是同一个包的新名称,但该.embed方法在处理嵌入式图像和 cid 时变得更加理智。

该答案的早期版本使骨髓和 TurboMail 混淆,而是指骨髓.embed签名。

于 2012-06-26T09:01:38.027 回答
0

显然,Postmarkapp 不支持内联图像。

于 2012-07-10T06:17:36.643 回答