2012-11-11 5 views
5

Ich habe eine Rails-App, die viele Benachrichtigungs-E-Mails versendet. Wir haben den Wunsch, den Benutzer zwischen reinem Text und HTML wählen zu lassen.Senden nur E-Mail-Text, Rails Mime Teil im Körper

Anfangs war unser Wunsch immer mehrteilig, so dass wir keinen Inhaltstyp festgelegt und einfach beide Emails email.html.erb & email.text.erb hatten, die beide durchgesandt werden und ein multipart erstellen würden.

Nun jedoch, wenn wir den content_type basierend auf der Benutzerpräferenz angeben, wird er sich korrekt auf multipart oder plain/text einstellen, aber die html-Vorlage wird als einfacher Text am Ende der Nur-Text-E-Mail eingefügt. Hier

ist der Code:

Mailer Aktion:

def client_creation(client) # When client checks in for the first time 
    @client = client 
    content_type = client.company.html_emails ? nil : 'text/plain' 
    email_prefix = client.company.brand ? client.company.brand.email_subject_prefix : 'MonitoringClient' 
    mail(to: @client.company.administrative_reporting_address, subject: "[#{email_prefix}][Initial Check-in] #{@client.machine_name.html_safe} of #{@client.clientgroup.name}", content_type: content_type) 
end 

Der obige Code prüft, ob die Clients Firma html_emails hat eingeschaltet ist, wenn also die content_type auf plain/text gesetzt. Welche ergibt folgendes:

IRB-Ausgang:

#<Mail::Message:70269523266340, Multipart: false, Headers: <Date: Sun, 11 Nov 2012 09:09:43 -0600>, <From: [email protected]>, <To: ommitted>, <Message-ID: <[email protected]>>, <Subject: [Initial Check-in] Jonathan of hivemind labs>, <Mime-Version: 1.0>, <Content-Type: text/plain>, <Content-Transfer-Encoding: 7bit>> 

So weit so gut Mehrteiliger falsch content_type ist text/plain, aber dann ist hier die resultierende E-Mail-Körper:

----==_mimepart_509fbfb7ddb8b_11e113fe8e4435b4083853 
Date: Sun, 11 Nov 2012 09:09:43 -0600 
Mime-Version: 1.0 
Content-Type: text/plain; 
charset=UTF-8 
Content-Transfer-Encoding: 7bit 
Content-ID: <[email protected]> 

First check-in notification for Jonathan. 

=========================== CLIENT DETAILS =========================== 
MACHINE INFORMATION: 
    MacBookAir4,1 

REPORT TIME: 
    Nov 11, 2012 8:17am 
CLIENT GROUP: 
    Hivemind Labs 
MACHINE NAME: 
    Jonathan 
LAST USER: 
    Jonathan 
SERIAL NUMBER: 
    ommited 


MACHINE SPECIFICATIONS: 
    RAM: 
    4 GB 
    PROCESSOR INFO: 
    1x 
    1.8 GHz, 
    2 core 
    Intel Core i7 
CLIENT VERSION: 
    5.0.5 
UPTIME AT LAST CHECKIN: 
    4 days, 21 hours, 11 mins 



----==_mimepart_509fbfb7ddb8b_11e113fe8e4435b4083853 
Date: Sun, 11 Nov 2012 09:09:43 -0600 
Mime-Version: 1.0 
Content-Type: text/html; 
charset=UTF-8 
Content-Transfer-Encoding: 7bit 
Content-ID: <[email protected]> 

<!DOCTYPE html> 
<html> 
<head> 
<title> </title> 
</head> 
<body leftmargin="0" marginwidth="0" topmargin="0" marginheight="0" offset="0"> 
    <table style="box-shadow: 0px 0px 28px -10px #222; margin: 10px auto 20px" border="0" cellpadding="0" cellspacing="0" width="600" id="templateContainer" > 
    <tr> 
       <td align="center" valign="top"> 
        <table border="0" cellpadding="0" cellspacing="0" width="600" id="templateHeader"> 
         <tr> 
          <td class="headerContent"> 

          </td> 
         </tr> 
        </table> 
       </td> 
      </tr> 
    <tr> 
       <td align="left" valign="top" style="width:600px"> 
        <table border="0" cellpadding="10" cellspacing="0" width="600px" id="templateBody"> 
         <tr> 
          <td valign="top" class="bodyContent"> 
           <table border="0" cellpadding="0" cellspacing="0" width="600px"> 
            <tr> 
             <td valign="top"> 
              <div class="mainContent"> 

<style type="text/css" media="screen"> 
    table.info tr td:first-child{ 
     width:40%; 
     color: #ffffff; 
     text-shadow:1px 1px 1px #555; 
     background-color: #2C2C2C; 
     background-image: -moz-linear-gradient(top, #888, #777); 
     background-image: -ms-linear-gradient(top, #888, #777); 
     background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#888), to(#777)); 
     background-image: -webkit-linear-gradient(top, #888, #777); 
     background-image: -o-linear-gradient(top, #888, #777); 
     background-image: linear-gradient(top, #888, #777); 
     background-repeat: repeat-x; 
     filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#888', endColorstr='#777', GradientType=0); 
     -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1); 
     -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1); 
     box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25) 
     } 
     legend + .page-actions.page-actions-small { 
     margin-top: -49px; 
     } 
</style> 
    <legend>Client Details</legend> 
<div id="" class="page-actions page-actions-small pull-right"> 
    <a href="#" class="btn btn-mini">Complete Overview</a> 
</div> <!-- close: page-actions --> 
<table style="" class="table table-bordered table-striped table-condensed info"> 
    <tbody> 
    <tr><td>Client Group</td><td>Hivemind Labs</td></tr> 
    <tr><td>Serial Number</td><td></td></tr> 
    <tr><td>Machine Name</td><td> Jonathan</td></tr> 
    <tr><td>Last User</td><td>Jonathan</td></tr> 
    <tr><td>Operating system</td><td>OS X 10.8.2 (12C60)</td></tr> 
    <tr><td>Installed RAM</td><td>4 GB</td></tr> 
    <tr><td>Model Details</td><td>MacBookAir4,1</td></tr> 
    <tr><td>Uptime</td><td>4 days, 21 hours, 11 mins</td></tr> 
    </tbody> 
</table> 

               </div> 
             </td> 
            </tr> 
           </table> 
          </td> 
         </tr> 
        </table> 
       </td> 
      </tr> 
      <tr> 
       <td align="center" valign="top"> 
        <table border="0" cellpadding="5" cellspacing="0" width="100%"> 
         <tr> 
          <td style="padding: 0 0 20px 20px"> 
           <small class="copyright"> All Rights Reserved.</small> 
          </td> 
         </tr> 
        </table> 
       </td> 
      </tr> 
     </table> 
</body> 

</html> 



----==_mimepart_509fbfb7ddb8b_11e113fe8e4435b4083853-- 

Warum alle die Mime-Part-Daten, warum ist der HTML-Inhalt als Text sichtbar? Ich möchte eine Nur-Text-E-Mail. Wird das nicht erreicht?

Eine Sache, die ich bemerkte, ist, dass der HTML-Abschnitt der E-Mail content_type: 'text/html' sagt. Vielleicht wird es deswegen aufgenommen? Kann dies verhindert werden?

Diese Frage schien nahe zu sein scheint aber diese Person nur zu arbeiten versucht, wie mehrt zu senden, das nicht unser Problem ist: Rails mailer mimepart visible as text in message body

ich versuchte auch unsere Textvorlage zu ändern, um email.text.plain .erb, nachdem ich das an einigen Stellen gesehen habe, aber das hat auch nicht funktioniert.

hier die E-Mail-Header, wenn jemand neugierig ist:

Delivered-To: [email protected] 
Received: by 10.60.124.225 with SMTP id ml1csp294562oeb; 
    Sun, 11 Nov 2012 07:09:46 -0800 (PST) 
Received: by 10.236.122.143 with SMTP id t15mr16902572yhh.26.1352646586007; 
    Sun, 11 Nov 2012 07:09:46 -0800 (PST) 
Return-Path: <[email protected]> 
Received: from mail-gh0-f181.google.com (mail-gh0-f181.google.com [209.85.160.181]) 
    by mx.google.com with ESMTPS id p20si1615988ano.75.2012.11.11.07.09.45 
    (version=TLSv1/SSLv3 cipher=OTHER); 
    Sun, 11 Nov 2012 07:09:45 -0800 (PST) 
Received-SPF: pass (google.com: domain of [email protected] designates 209.85.160.181 as permitted sender) client-ip=209.85.160.181; 
Authentication-Results: mx.google.com; spf=pass (google.com: domain of [email protected] designates 209.85.160.181 as permitted sender) [email protected] 
Received: by mail-gh0-f181.google.com with SMTP id z22so1332210ghb.26 
    for <[email protected]>; Sun, 11 Nov 2012 07:09:45 -0800 (PST) 
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; 
    d=google.com; s=20120113; 
    h=date:from:to:message-id:subject:mime-version:content-type 
    :content-transfer-encoding:x-gm-message-state; 
    bh=OFH7ScRSXxkeW0Ig+UdGXMRcNoKwEcIPDFaTVrwnnRs=; 
    b=i+Oq1YtnJVh3hM6bB5JgXbZGUS1KnvIsyX2zU2UCoCGtGd1DrvifYQGTPSkqbjlqg0 
    vArkYg9ZOApVkueLh8fU3lXocCgXy1cSQ7pnTDo5aj2YKyNj8XcshGU5PN24nKmNkJNn 
    AOHD75ounew3lrfL/dPGx5rfD6ROIgOORIHioPUSs9sFPUbbfu1OsPDBlAAv4zPWbBuG 
    tbjR1JL7DntD3sPzcHiZJ9XyajhhuYQPZ/j5f/++Bdyfqq1s8uxlZvapQlndai58KtqU 
    EjmDb91+C/uIc9FwcT2YE0vv3pdrIHnlGYmfyX/sB0ZDDET+dTFcCOmbqpbaAwxavRb+ 
    GAUg== 
Received: by 10.236.83.103 with SMTP id p67mr16870674yhe.78.1352646585386; 
    Sun, 11 Nov 2012 07:09:45 -0800 (PST) 
Return-Path: <[email protected]> 
Received: from gmail.com (ip-216-115-131-150.static.eatel.net. [216.115.131.150]) 
    by mx.google.com with ESMTPS id u11sm3665339ane.11.2012.11.11.07.09.44 
    (version=TLSv1/SSLv3 cipher=OTHER); 
    Sun, 11 Nov 2012 07:09:45 -0800 (PST) 
Date: Sun, 11 Nov 2012 09:09:43 -0600 
From: [email protected] 
To: [email protected] 
Message-ID: <[email protected]> 
Subject: [Initial Check-in] Jonathan of hivemind labs 
Mime-Version: 1.0 
Content-Type: text/plain; 
    charset=UTF-8 
Content-Transfer-Encoding: 7bit 
X-Gm-Message-State: ALoCoQlSNX58YFYU6Idzq84zch66CnL12QD/WrT3R8kcu0wT2jV9oppA1clUl9pHY2hta0vIMqJx 

Antwort

7
mail(to: @client.company.administrative_reporting_address, 
    subject: "[#{email_prefix}][Initial Check-in] \ 
       #{@client.machine_name.html_safe} of #{@client.clientgroup.name}", 
    content_type: content_type) do |format| 
    format.html if client.company.html_emails 
    format.text 
end 
+0

Das hatte ich tatsächlich gearbeitet mich über eine andere Methode aber ähnlich genug, ich glaube, es sollte funktionieren. – JonathanSimmons