通过回形针在AWS上发送带有图像的电子邮件,这是一件非常奇怪的事情

时间:2011-02-15 23:41:31

标签: ruby-on-rails email amazon-s3 paperclip src

我发送来自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等)和客户端,但问题就出现了。

1 个答案:

答案 0 :(得分:3)

我从.NET应用程序发送电子邮件之前遇到过类似的问题。我不能保证这是同一个问题,因为我不知道任何关于此处发生的内部魔法,但希望这会有所帮助。

SMTP在邮件流中有一个行长度限制,因此如果邮件太长,SMTP服务器可能会破坏该行。我认为限制是1000个字符,但并非所有服务器都可以正确实现协议。

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

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