Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 发送1个附件,收件人报告2个附件(添加了ATT0001.c)-Rails 3,ActionMailer_Ruby On Rails_Ruby_Email_Attachment - Fatal编程技术网

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

Ruby on rails 发送1个附件,收件人报告2个附件(添加了ATT0001.c)-Rails 3,ActionMailer,ruby-on-rails,ruby,email,attachment,Ruby On Rails,Ruby,Email,Attachment,为了与其他系统交换数据,我们将数据作为电子邮件附件发送到专用地址。电子邮件是使用ActionMailer v3.2.12生成的 问题是,当电子邮件到达目的地时,除了我们创建的附件之外,一个名为ATT00001.c的冗余附件也是电子邮件的一部分。这会导致另一端的导入例程出现问题 问题的很大一部分是,我们对目的地的电子邮件处理方式几乎一无所知。我们也不知道使用的是哪种类型的电子邮件服务器,也无法检查电子邮件到达时的实际外观。我们可以把它寄到我们自己的地址,那里看起来不错 我知道这并不是很多事情,但也

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

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

问题的很大一部分是,我们对目的地的电子邮件处理方式几乎一无所知。我们也不知道使用的是哪种类型的电子邮件服务器,也无法检查电子邮件到达时的实际外观。我们可以把它寄到我们自己的地址,那里看起来不错

我知道这并不是很多事情,但也许你们中的一个人以前见过这些ATT0001附件被添加到机器生成的电子邮件中

config.action\u mailer.smtp\u设置

address: smtp.<mailprovider>.com
port: 587
domain: ourdomain.com
authentication: login
user_name: <removed>
password: <removed>
enable_starttls_auto: false
这是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: 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
(..)使用地址取消发送头内容
内容处置:附件;
filename=“afilename.txt”
内容传输编码:base64
内容类型:应用程序/EDIFACT;charset=“iso-8859-1”
Mime版本:1.0
日期:2013年2月16日星期六11:07:10+0100
发件人:ediel@example.com
致:**@gmail.com
主题:主题
消息ID:
X-TM-AS-Product-Ver:IMSS-7.0.0.6298-6.8.0.1017-19380.002
X-TM-AS-User-Approved-Sender:是
X-Greylist:发送方符合SPF,未延迟
milter-greylist-4.0(isp-app27-vm.isp.example.com[213.239.116.46]);
Sat,2013年2月16日11:07:11+0100(CET)
X-ExampleKT-MailScanner-Information:请与ISP联系以获取更多信息
X-ExampleKT-MailScanner-ID:r1GA7BqD021150
X-ExampleKT-MailScanner:发现是干净的
X-ExampleKT-MailScanner-发件人:ediel@example.com
X-Spam-Status:否
VU5BOISUPYANVU5CK1VOT0M6MYS3MDGWMDA1MDUXMJE3OJE0OLRJTUVSKZCWODWMM0MTE3MTY6
.. 更多
pUSU1FUisxJ1VOVCszKzEnVU5aKzErMjAxMzAyMDAyNDg1Nzcn

内容类型有问题吗?是否从发送的电子邮件中
--
之前的内容生成了新的(空)附件?

我认为这与内联附件和Exchange server有关。有些客户端,尤其是Apple Mail,允许您添加内联附件,即夹在电子邮件文本/正文部分之间的MIME附件。Exchange server希望所有附件都显示在邮件的任何文本部分之后


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

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

在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
class-MailMan
您使用什么发送电子邮件,请发布smtp设置的相关部分。ActionMailer::Base.smtp\u设置={:address=>'???',配置已附加到邮件提供商基于MS Exchange的OPis?不,我们端没有涉及Exchange服务器。此外,如果是,无论电子邮件发送到何处,我们都不会看到多余的附件吗?收件人端可能涉及Exchange服务器,我不知道是这样的谷歌ATT001返回了大量关于附件的信息,这一切似乎都与交换有关,很可能是因为他们的原因,也有很多是MAC用户在向exchange发送附件时抱怨的问题???@Shargoz已经尝试过切换顺序,而你链接到的答案是我在评论中提出的一个问题。
class MailMan < ActionMailer::Base
  def test
    attachment_content = "my attachment"
    disposition = "attachment; filename=\"test.txt\""
    mail(body: attachment_content,  content_disposition: disposition)
  end
end