2012-09-28 141 views
3

我送使用Rails的邮件是这样的:附加文件 - mimepart梅勒

attachments["ticket.pdf"] = WickedPdf.new.pdf_from_string(render_to_body(pdf: "ticket", template: 'template' })) 

这Gmail,但在附件中的PDF刚刚没有出现其它几个客户效果很好。

看着源代码,我意识到这是mimeparts的问题。

如果我分析发送的电子邮件的源代码,我发现这个: mimepart对于每个部分都是相同的,我在yahoo和其他几个电子邮件客户端(如Thunderbird)文件... 层次结构(据我了解)的必须是这样的:

multipart/mixed 
multipart/alternative 
multipart/related 
text/html 
image/png (e.g. for an inline attachment; pdf would be another good example) 
text/plain 
application/zip (e.g for an attachment--not inline) 

我是从https://github.com/jcoleman/mail_alternatives_with_attachments

这里提取的,是电子邮件源(只为内容的块更好的了解):

Delivered-To: [email protected] 
Received: by 10.194.54.135 with SMTP id j7csp144091wjp; 
     Fri, 28 Sep 2012 10:55:03 -0700 (PDT) 
Received: by 10.224.187.146 with SMTP id cw18mr18768052qab.35.1348854902751; 
     Fri, 28 Sep 2012 10:55:02 -0700 (PDT) 
Return-Path: <[email protected]> 
Received: from mail-qa0-f46.company.com (mail-qa0-f46.company.com [209.85.216.46]) 
     by mx.company.com with ESMTPS id c6si13006455qao.34.2012.09.28.10.55.02 
     (version=TLSv1/SSLv3 cipher=OTHER); 
     Fri, 28 Sep 2012 10:55:02 -0700 (PDT) 
Received-SPF: pass (company.com: domain of [email protected] designates 209.85.216.46 as permitted sender) client-ip=xx.xxx.xxx.xxx; 
Authentication-Results: mx.company.com; spf=pass (company.com: domain of [email protected] designates 209.85.216.46 as permitted sender) [email protected]; dkim=pass [email protected] 
Received: by mail-qa0-f46.company.com with SMTP id c26so105866qad.5 
     for <[email protected]>; Fri, 28 Sep 2012 10:55:02 -0700 (PDT) 
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; 
     d=company.com; s=20120113; 
     h=date:from:reply-to:to:message-id:subject:mime-version:content-type 
     :content-transfer-encoding; 
     bh=nETVpMomUq0PkrNf9ScGjdaBPc5tYF0m1Rphx5FNS4c=; 
     b=I1ICSRRK10cdrqXxkNWmK5cLvXOqFpxXmzxNMlIVa8jh+4U1GwqwI1GZF7BRXh5FAU 
     wCyTzXfSkBrmn2cVGwUUiNEh956KT2ssWx37cQIb915lSp6rdIqflgQcF9yKwmtJoxDL 
     qO+nEVse7+Azi828zC7D6VV7ebAbmnr006KmppkH9bxILk+syiPKLvp4rZXAMIp0IFW8 
     nYZ2jY+n/ryduTSl0qDaBDCzVrky2eNwpqfJYizoYWIhxFuDmUWwaPpKzfWoxzT4b0+P 
     Mp/Ugv6iN1QyETJWbOfX4lpGezFzcaV7reZaBXLzcqUe1dc8elxFfWncsE0vozmFaj8m 
     z37Q== 
Received: by 10.224.58.134 with SMTP id g6mr18690371qah.40.1348854902269; 
     Fri, 28 Sep 2012 10:55:02 -0700 (PDT) 
Return-Path: <[email protected]> 
Received: from localhost.localdomain (company.com. [xx.xxx.xxx.xx]) 
     by mx.company.com with ESMTPS id ck11sm13357478qab.17.2012.09.28.10.54.56 
     (version=TLSv1/SSLv3 cipher=OTHER); 
     Fri, 28 Sep 2012 10:55:00 -0700 (PDT) 
Return-Path: <[email protected]> 
Date: Fri, 28 Sep 2012 15:09:56 -0300 
From: somewhere <[email protected]> 
Reply-To: [email protected] 
To: [email protected] 
Message-ID: <[email protected]> 
Subject: algun subject 
Mime-Version: 1.0 
Content-Type: multipart/alternative; 
boundary="--==_mimepart_5065e7f4af345_a9e43fdbdd45a760153b9"; 
charset=UTF-8 
Content-Transfer-Encoding: 7bit 


----==_mimepart_5065e7f4af345_a9e43fdbdd45a760153b9 
Date: Fri, 28 Sep 2012 15:09:56 -0300 
Mime-Version: 1.0 
Content-Type: text/plain; 
charset=UTF-8 
Content-Transfer-Encoding: quoted-printable 
Content-ID: <[email protected]> 

******** 
texto cualquiera 
******** 



----==_mimepart_5065e7f4af345_a9e43fdbdd45a760153b9 
Date: Fri, 28 Sep 2012 15:09:56 -0300 
Mime-Version: 1.0 
Content-Type: text/html; 
charset=UTF-8 
Content-Transfer-Encoding: quoted-printable 
Content-ID: <[email protected]> 

<html xmlns=3D'http://www.w3.org/1999/xhtml'> 
    <html xml:lang=3D'en' xmlns=3D'http://www.w3.org/1999/xhtml'> 
    <head> 
     <meta content=3D'text/html; charset=3Dutf-8' http-equiv=3D'Content-= 
Type'> 
     <title>somewhere</title> 
     <link href=3D'/assets/ev_classic_mailer.css' rel=3D'stylesheet' typ= 
e=3D'text/css'> 
     <link href=3D'/assets/mailer_colors.css' rel=3D'stylesheet' type=3D= 
'text/css'> 
    </head> 
    <body> 
     <table class=3D'mail-container-table'> 
     <tr> 
      <td class=3D'decoration' colspan=3D'3'></td> 
     </tr> 
     <tr> 
      <th background=3D'https://here.company.com/ass= 
ets/mail/ev_classic_hd.png' class=3D'bcolor12 border header-01' colspan=3D= 
'3'> 
      <h1>cogotudo</h1> 
      </th> 
     </tr> 
     </table> 
    </body> 
    </html> 
</html> 

----==_mimepart_5065e7f4af345_a9e43fdbdd45a760153b9 
Date: Fri, 28 Sep 2012 15:09:56 -0300 
Mime-Version: 1.0 
Content-Type: text/html; 
charset=UTF-8 
Content-Transfer-Encoding: quoted-printable 
Content-ID: <[email protected]> 

<html xmlns=3D"http://www.w3.org/1999/xhtml" style=3D"outline: 0; font-we= 
ight: inherit; font-style: inherit; font-size: 100%; font-family: inherit= 
; vertical-align: baseline; margin: 0; padding: 0; border: 0;"> 
    <html xml:lang=3D"en" xmlns=3D"http://www.w3.org/1999/xhtml" style=3D"o= 
utline: 0; font-weight: inherit; font-style: inherit; font-size: 100%; fo= 
nt-family: inherit; vertical-align: baseline; margin: 0; padding: 0; bord= 
er: 0;"> 
    <head> 
     <meta content=3D'text/html; charset=3Dutf-8' http-equiv=3D'Content-= 
Type'> 
     <title>somewhere</title> 
     <link href=3D'/assets/ev_classic_mailer.css' rel=3D'stylesheet' typ= 
e=3D'text/css'> 
     <link href=3D'/assets/mailer_colors.css' rel=3D'stylesheet' type=3D= 
'text/css'> 
    </head> 
    <body style=3D"outline: 0; font-weight: inherit; font-style: inherit;= 
</body> 
    </html> 
</html> 


----==_mimepart_5065e7f4af345_a9e43fdbdd45a760153b9 
Date: Fri, 28 Sep 2012 15:09:56 -0300 
Mime-Version: 1.0 
Content-Type: application/pdf; 
charset=UTF-8; 
filename=ticket.pdf 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; 
filename=ticket.pdf 
Content-ID: <[email protected]> 

JVBERi0xLjQKMSAwIG9iago8PAovVGl0bGUgKP7/KQovQ3JlYXRvciAo/v8p 
Ci9Qcm9kdWNlciAo/v8AUQB0ACAANAAuADgALgAyACAAXCgAQwBcKQAgADIA 
MAAxADEAIABOAG8AawBpAGEAIABDAG8AcgBwAG8AcgBhAHQAaQBvAG4AIABh 
AG4AZAAvAG8AcgAgAGkAdABzACAAcwB1AGIAcwBpAGQAaQBhAHIAeQBcKAAt 
AGkAZQBzAFwpKQovQ3JlYXRpb25EYXRlIChEOjIwMTIwOTI4MTgwOTU1KQo+ 
PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFnZXMgMyAw 
IFIKPj4KZW5kb2JqCjQgMCBvYmoKPDwKL1R5cGUgL0V4dEdTdGF0ZQovU0Eg 
dHJ1ZQovU00gMC4wMgovY2EgMS4wCi9DQSAxLjAKL0FJUyBmYWxzZQovU01h 
c2sgL05vbmU+PgplbmRvYmoKNSAwIG9iagpbL1BhdHRlcm4gL0RldmljZVJH 

----==_mimepart_5065e7f4af345_a9e43fdbdd45a760153b9-- 

回答

0

所有的mimepart边界都是一样的......它们都是'替代性'边界。

- == _ mimepart_5065e7f4af345_a9e43fdbdd45a760153b9

对于HTML,纯文本和附件的电子邮件时,你需要声明,妥善适当把边界在他们的正确的地方封装独立的部分。掌握所需内容的最简单方法是在电子邮件客户端中手动创建一个包含所需所有“功能”(HTML +纯文本+附件)的电子邮件,然后查看源代码并记录mimepart边界被布置。

每个电子邮件源的“一部分”,实际上宣告什么边界的样子,然后在每个部分结束还有那些边界线表示该部分的结尾的一个或多个。零件可以并且应该被封装在其他部件中。这非常复杂,但在你的例子中,你只有一个mimepart声明和使用,当你应该有更多的(如你在你的层次结构中指出的)。

现在作为其中/当这就会出差错,我们不得不看到你使用生成从开始到结束的电子邮件的代码。