ruby-on-rails - 发送 1 个附件,收件人报告 2 个附件(已添加 ATT0001.c) - Rails 3、ActionMailer

标签 ruby-on-rails ruby email attachment

为了与另一个系统交换数据,我们将数据作为电子邮件附件发送到专用地址。该电子邮件是使用 ActionMailer v3.2.12 生成的。

问题是,当电子邮件到达目的地时,除了我们创建的附件之外,电子邮件中还包含一个名为 ATT00001.c 的冗余附件。这会导致另一端的导入例程出现问题。

问题的一个重要部分是我们对目的地如何处理电子邮件几乎一无所知。我们也不知道正在使用什么类型的电子邮件服务器,也无法检查电子邮件到达时的实际情况。我们可以将其发送到我们自己的地址之一,那里看起来不错。

我知道这并不算多,但也许你们中的一个人之前已经看到这些 ATT00001 附件被添加到机器生成的电子邮件中。

config.action_mailer.smtp_settings

address: smtp.<mailprovider>.com
port: 587
domain: ourdomain.com
authentication: login
user_name: <removed>
password: <removed>
enable_starttls_auto: false

更新: 我们已经能够获得有问题的电子邮件的副本,它显示附件后呈现的电子邮件正文作为其自己的附件。 我们尝试设置 ActionMailer 的 parts_order 以确保在电子邮件正文之后生成附件,但没有帮助。

更新2: 发送到我的 Gmail 帐户并显示原始数据,我明白了。

已发送邮件 在接收者对正确附件的响应中(自动创建的附件会创建错误日志条目)

(...) cut: to from and through email header information
 Mime-Version: 1.0
Content-Type: multipart/mixed;
 charset=UTF-8
Content-Transfer-Encoding: 7bit


--
Date: Thu, 28 Feb 2013 12:15:23 +0100
Mime-Version: 1.0
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="thefile.mscons"
Content-ID: <512f3c4b6e875_a8f756dcc642fe@bjorns_arch.mail>

VU5BOisuPyAnVU5CK1VOT0M6Mys3MDgwMDAzNDExNzE2OjE0OlRJTUVSKzcw
... many more lines like this ...
ODAwMDUwNTEyMTc6MTQ6VElNRVIrMTMwMjI4OjEyMTUrUE9XRVNUMTMwMjI4

----

这是在actionmailer中使用body nil

接下来是来自收件人系统的响应,发送到我的 gmail。这是正确附件上的收据(额外的附件会生成错误,刷新系统)

已收到邮件

(..) unintersting header stuff with addresses
Content-Disposition: attachment;
  filename="afilename.txt"
Content-Transfer-Encoding: base64
Content-Type: Application/EDIFACT; charset="iso-8859-1"
Mime-Version: 1.0
Date: Sat, 16 Feb 2013 11:07:10 +0100
From: <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="adc8c9c4c8c1edc8d5ccc0ddc1c883cec2c0" rel="noreferrer noopener nofollow">[email protected]</a>
To: ***@gmail.com
Subject: thesubject
Message-ID: <<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="3104000057045004021f09040150060101501f035750011f03500154627c6561787f6e70757574756e73637e7a747f715c491f565e5e565d541f525e5c" rel="noreferrer noopener nofollow">[email protected]</a>>
X-TM-AS-Product-Ver: IMSS-7.0.0.6298-6.8.0.1017-19380.002
X-TM-AS-User-Approved-Sender: Yes
X-Greylist: Sender is SPF-compliant, not delayed by
milter-greylist-4.0 (isp-app27-vm.isp.example.com [213.239.116.46]);
Sat, 16 Feb 2013 11:07:11 +0100 (CET)
X-ExampleIKT-MailScanner-Information: Please contact the ISP for more information
X-ExampleIKT-MailScanner-ID: r1GA7BqD021150
X-ExampleIKT-MailScanner: Found to be clean
X-ExampleIKT-MailScanner-From: <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="fc9998959990bc99849d918c9099d29f9391" rel="noreferrer noopener nofollow">[email protected]</a>
X-Spam-Status: No

VU5BOisuPyAnVU5CK1VOT0M6Mys3MDgwMDA1MDUxMjE3OjE0OlRJTUVSKzcwODAwMDM0MTE3MTY6
.. more..
pUSU1FUisxJ1VOVCszKzEnVU5aKzErMjAxMzAyMDAyNDg1Nzcn

内容类型有可疑之处?已发送电子邮件中 ​​-- 之前的内容是否会生成新的(空)附件?

最佳答案

我相信这与内联附件和Exchange服务器有关。某些客户端(尤其是 Apple Mail)允许您添加内联附件,即夹在电子邮件的文本/正文部分之间的 MIME 附件。 Exchange 服务器期望所有附件都出现在邮件的任何文本部分之后。

邮件中附件后面的所有内容都会被视为附件,因此正文会被填充到一个文件中,并按您报告的名称命名。鉴于您正在使用 ActionMailer,请参阅 this answer和可能this answer ,这说明您需要切换代码行的顺序,并可能使用一些其他设置。

关于ruby-on-rails - 发送 1 个附件,收件人报告 2 个附件(已添加 ATT0001.c) - Rails 3、ActionMailer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15029008/

相关文章:

python - 如何减少通过 REST api 发送的数据的延迟

ruby - 为 Windows 创建 Ruby 应用程序

ruby-on-rails - Rails 升级未定义方法 `cookie_verifier_secret`

html - ActionMailer,发送带有背景图片的电子邮件

ruby-on-rails - 渲染 Ruby on Rails 后保留参数

ruby-on-rails - Ruby:使用 ruby​​ 连接到打印机

ruby-on-rails - RSolr::Error::Http: RSolr::Error::Http - 500 内部服务器错误

email - 后缀电子邮件 TLS header 但未针对 gmail 加密

创建帐户后无法访问 PHP Laravel 5 用户类属性以发送电子邮件

python - django 发送电子邮件 - 在发送电子邮件之间安装时间延迟