1

我正在从 Rails 发送电子邮件,电子邮件中包含图像。这些图像通过回形针存储在 AWS S3 上。电子邮件在视图中构建并动态发送...

到目前为止你和我在一起吗?伟大的!

当收到电子邮件时,我会说大约十分之一的图像有一个稍微不正确的 src="" 标签,这意味着图像没有显示。

img 标签的 src 属性的问题是它在某处随机插入了一个“+”号。顺便说一下,这大约是十分之一的图像不起作用。所以 src 属性在电子邮件的来源中看起来像这样......

http://s3.ama+zonaws.com/bucketname/attachments/ect...
http://s3.amazonaws.com/bu+cketname/attachments/ect...
http://s3.amazonaws.com/bucketname/attachm+ents/ect...

你看!随机+的。什么可能导致 src 字符串发生这种情况?

干杯!

编辑:

他的输出图像的代码示例,

<%= image_tag xxxxx.image.url(:thumb), :style => "display:block; padding:0; line-height:0;" %>

如果你问我,这很标准。

请注意,我已经检查了控制台中的输出 html,并且 src 中没有 +。

...而且我已经尝试发送几个不同的电子邮件提供商(gmail、hotmail、me.com 等)和客户端,所有这些都出现了问题。

4

1 回答 1

3

我以前从 .NET 应用程序发送电子邮件时遇到过类似的情况。我不能保证这是同一个问题,因为我对这里发生的内部魔法一无所知,但希望这会有所帮助。

SMTP 在消息流中有行长限制,所以如果您的消息太长,SMTP 服务器可能会断行。我认为限制是 1000 个字符,但并非所有服务器都可以正确实现协议。

在某些情况下,服务器还会在换行符处插入一个字符,最常见的是!blank。如果在图像 URL 中插入空白字符,客户端软件可能会将其编码为+.

尝试cr+lf在每张图片后插入换行符,看看问题是否有所改善。

于 2011-02-24T16:32:55.730 回答