【问题标题】:Sending 1 attachement, recipients reports 2 attachements (ATT0001.c added) - Rails 3, ActionMailer发送 1 个附件,收件人报告 2 个附件(添加了 ATT0001.c) - Rails 3,ActionMailer
【发布时间】:2013-03-01 02:36:53
【问题描述】:

为了与另一个系统交换数据,我们将数据作为电子邮件附件发送到专用地址。电子邮件是使用 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

----

这是body nil在actionmailer中

接下来是来自收件人系统的回复,发送到我的 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: ediel@example.com
To: ***@gmail.com
Subject: thesubject
Message-ID: <511f5a53.850a700a.2fa0.2a0eSMTPIN_ADDED_BROKEN@mx.google.com>
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: ediel@example.com
X-Spam-Status: No

VU5BOisuPyAnVU5CK1VOT0M6Mys3MDgwMDA1MDUxMjE3OjE0OlRJTUVSKzcwODAwMDM0MTE3MTY6
.. more..
pUSU1FUisxJ1VOVCszKzEnVU5aKzErMjAxMzAyMDAyNDg1Nzcn

Content-Type 有什么可疑之处吗?发送邮件中-- 之前的内容是否生成了新的(空)附件?

【问题讨论】:

  • 您使用什么发送电子邮件,发布您的 smtp 设置的相关部分。 ActionMailer::Base.smtp_settings = { :address => '??????',
  • 配置已附加到OP
  • 邮件提供商是基于 MS Exchange 的吗?
  • 不,我们这边不涉及任何 Exchange 服务器。另外,如果是这样,无论电子邮件发送到哪里,我们都不会看到多余的附件吗?收件人端可能涉及到 Exchange 服务器,我还不知道。
  • 谷歌搜索 ATT0001 会返回大量有关附件的信息,这一切似乎都与交换有关,很可能是在他们的一端,还有很多是 MAC 用户在向交换发送附件时抱怨这个问题? ??

标签: ruby-on-rails ruby email attachment


【解决方案1】:

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

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

【讨论】:

  • @Shargoz 已经尝试过切换顺序,您链接到的答案是我在评论中链接的问题。
【解决方案2】:

我们的问题解决了,但遗憾的是我不能说是什么导致了多余的附件。我们通过发送仅包含附件的非多部分电子邮件来解决此问题。这种解决方案显然不适用于需要发送多部分电子邮件的人。

在 Rails 中发送带有附件的非多部分电子邮件并不简单。您不能使用附件辅助方法和空白正文,您需要将附件内容放在电子邮件正文中并手动指定处置。

class MailMan < ActionMailer::Base
  def test
    attachment_content = "my attachment"
    disposition = "attachment; filename=\"test.txt\""
    mail(body: attachment_content,  content_disposition: disposition)
  end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 2012-12-26
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多