3

向 gmail 发送带有附件(html 文件)的电子邮件时,不会发送电子邮件正文。如果我注释掉下面的附件设置就可以了。如果碰巧电子邮件没有任何附件,那就没问题了。

我测试了只有当文件的扩展名为“html”时才会出现问题。其他文件,如 log、png 都可以。

  • ruby 1.8.7 (2010-08-16 补丁级别 302) [i386-mingw32]
  • 哑剧类型 (1.18)
  • 小马 (1.4)

如何 .html 在我的发送邮件功能中正确发送文件?

更新:我从收到的电子邮件中添加了一个摘录,电子邮件正文作为中间 mimepart 出现。搜索Content-ID: <4fdfd7725ba26_a0c1a825dc8363d@RATionalxp.mail>

def email_it(body, subject, to, from, attachment_to_send)

  $smtp = 'mail.com.au'
  $smtp_port = 25

  body_with_footer = body +Email_footer

    Pony.mail(
        :to => to, 
        :from => from,
        :subject => subject, 
        :body => Nokogiri::HTML(body_with_footer).text, 
        :html_body =>  body_with_footer, 
        :attachments => attachment_to_send,
        :via => :smtp, 
        :via_options => {
                :address     => $smtp,
                :port     => $smtp_port,
                :enable_starttls_auto => false
        }
    )
end

从收到的电子邮件中提取

Mime-Version: 1.0
Content-Type: multipart/alternative;
 boundary="--==_mimepart_4fdfd77251dac_a0c1a825dc83328";
 charset=UTF-8
Content-Transfer-Encoding: 7bit



----==_mimepart_4fdfd77251dac_a0c1a825dc83328
Date: Tue, 19 Jun 2012 11:35:46 +1000
Mime-Version: 1.0
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: base64
Content-ID: <4fdfd7725ba26_a0c1a825dc8358f@RATionalxp.mail>

QW50wqBydW7CoG5hbWXCoMKgOsKgRWR1bWF0ZV91cGdyYWRlX211bHRpwqAo
ZXhwcmVzcylPdmVyYWxswqByZXN1bHQ6wqBmYWlswqBBbnTCoHJ1bsKgdG9v
azrCoG5vYm9kecKga25vd3PCoDstKcKgUmVzdG9yaW5nwqBmcm9twqAvdmFy
L2xpYi9lZHVtYXRlL2JkcnMvbG9xdWF0L2RhdGFiYXNlcy93ZWVrbHkvTE9R
VUFULjAuZGIyaW5zdDEuTk9ERTAwMDAuQ0FUTjAwMDAuMjAxMjA2MTAwMjMw
MDYuMDAxVGltZXN0YW1wwqBvZsKgYmFja3VwwqBpbWFnZcKgaXM6wqAxMMKg
SnVuwqAyMDEywqAwMjozMERhdGFiYXNlwqBSQVRJT05BTMKgcmVzdG9yZWTC
oHN1Y2Nlc3NmdWxsecKgZnJvbcKgZGF0YWJhc2U6wqBMT1FVQVRyZXN0b3Jl
wqB0b29rOsKgMDowMDozOC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LURldGFpbHPCoGZvcsKgYWxswqBSYXRpb25hbMKgdGVzdMKgc3VpdHMtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1FZHVtYXRlX3VwZ3JhZGU6wqBs
b2fCoGZpbGXCoG5vdMKgY3JlYXRlZC7CoEVycm9ywqBpbsKgcHJldmlvdXPC
oHRlc3TCoHN1aXTCoChzdG9wT25GYWlsdXJlPSd0cnVlJynCoG9ywqBpbsKg
YW50wqBydW7CoGl0c2VsZi5Qb3dlcmVkIGJ5IEVkdVRlc3RlciBodHRwOi8v
MTAuMC4wLjUw


----==_mimepart_4fdfd77251dac_a0c1a825dc83328
Date: Tue, 19 Jun 2012 11:35:46 +1000
Mime-Version: 1.0
Content-Type: text/html;
 charset=UTF-8
Content-Transfer-Encoding: 7bit
Content-ID: <4fdfd7725ba26_a0c1a825dc8363d@RATionalxp.mail>

Ant&nbsp;run&nbsp;name&nbsp;&nbsp;:&nbsp;Edumate_upgrade_multi&nbsp;(express)<BR>Overall&nbsp;result:&nbsp;fail<BR>&nbsp;<BR>Ant&nbsp;run&nbsp;took:&nbsp;nobody&nbsp;knows&nbsp;;-)<BR>&nbsp;<BR>Restoring&nbsp;from&nbsp;/var/lib/edumate/bdrs/loquat/databases/weekly/LOQUAT.0.db2inst1.NODE0000.CATN0000.20120610023006.001<BR>Timestamp&nbsp;of&nbsp;backup&nbsp;image&nbsp;is:&nbsp;10&nbsp;Jun&nbsp;2012&nbsp;02:30<BR>Database&nbsp;RATIONAL&nbsp;restored&nbsp;successfully&nbsp;from&nbsp;database:&nbsp;LOQUAT<BR>restore&nbsp;took:&nbsp;0:00:38<BR><BR><BR>------------------------------<BR>Details&nbsp;for&nbsp;all&nbsp;Rational&nbsp;test&nbsp;suits<BR>------------------------------<BR><BR>Edumate_upgrade:&nbsp;log&nbsp;file&nbsp;not&nbsp;created.&nbsp;Error&nbsp;in&nbsp;previous&nbsp;test&nbsp;suit&nbsp;(stopOnFailure='true')&nbsp;or&nbsp;in&nbsp;ant&nbsp;run&nbsp;itself.<BR><BR><HR><BR>Powered by EduTester http://10.0.0.50

----==_mimepart_4fdfd77251dac_a0c1a825dc83328
Date: Tue, 19 Jun 2012 11:35:46 +1000
Mime-Version: 1.0
Content-Type: text/html;
 charset=UTF-8;
 filename=rational_ft_logframe.html
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename=rational_ft_logframe.html
Content-ID: <4fdfd77259308_a0c1a825dc834d0@RATionalxp.mail>

<HTML>
<HEAD>
<META HTTP-EQUIV="charset" CONTENT="utf-8">

更新2

来自小马谷歌组(不是我的话)

我有一个类似但更简单的例子。

Pony.mail to: 'me@test.com', 
   from: 'test@test.com',
   subject: 'test attachments',
   html_body: '<p>HTML</p>',
   body: 'Text',
   attachments: { File.basename(a_file_path) => File.read(a_file_path) }

我认为内容类型和边界设置不正确。使用上面的代码,我只会看到附件,看不到 HTML 或文本正文,尽管它们被正确发送。如果我查看替代方案(OSX Mail 上的 Option-Command-]),我可以看到它们,并且它们显示正确。content-type 设置为 multipart/alternative,没有 Content-Disposition。我相信在这种情况下,我们发送 html、纯文本和附件作为替代品,而不是带有附件的 2 个替代品,我认为这是混合的,尽管设置内容类型 multipart/mixed 似乎不起作用两者之一:所有 3 个都彼此内联。

4

3 回答 3

1

我的解决方法是在附加之前将 .htm(l) 文件重命名为 .txt。

于 2012-07-26T22:21:46.430 回答
1

对我来说,它通过添加

headers: { "Content-Type" => "multipart/mixed" }

作为 Pony.mail 的参数。

于 2013-06-21T08:40:35.783 回答
-1

将此附件放在通过这样的选项下

Pony.mail to: 'me@test.com', 
   from: 'test@test.com',
   subject: 'test attachments',
   html_body: '<p>HTML</p>',
   body: 'Text',
   :via_options => { :port => '25',
                     :address => 'smtp.gmail.com',
                     :enable_starttls_auto => true, 
                     :attachments: { File.basename(a_file_path) => File.read(a_file_path)}
                    }
于 2014-03-30T15:01:28.297 回答