2016-12-06 1 views
0

Ich möchte eine E-Mail mit einem angehängten Bild senden und dieses Bild in HTML einbetten. Als Quelle für Tag, Was soll ich schreiben und gibt es fehlende Header-Teile wie einen content_type?Senden von E-Mails mit eingebettetem Bild in Ruby

Wenn ich einen echten Test mache, sende ich eine Mail an mein Google Mail Konto. Ich kann sehen, dass es einen Anhang mit dem Namen "unbenannt" gibt und ich konnte das Bild nicht anzeigen, selbst wenn ich es herunterlade.

Gem: Pony

require 'pony' 
Pony.override_options = { :via => :test } 
Pony.mail(
    :to => '[email protected]', 
    :from => '[email protected]', 
    :subject => 'test123', 
    :body => "<h1><strong>Dear X, check the newsletter ,<br></strong></h1> <img src='attached image' />", 
    :attachments => {"happy_image.jpg" => File.read("happy_image.jpg")} 
) 
puts Mail::TestMailer.deliveries 

Ausgang:

Date: Tue, 06 Dec 2016 17:23:05 +0300 

From: [email protected] 

To: [email protected] 

Message-ID: <[email protected]> 

Subject: test123 

Mime-Version: 1.0 

Content-Type: multipart/mixed; 

boundary="--==_mimepart_5846c9caf15a_5983c9fd8989e5"; 

charset=UTF-8 

Content-Transfer-Encoding: 7bit 





----==_mimepart_5846c9caf15a_5983c9fd8989e5 

Content-Type: text/plain; 

charset=UTF-8 

Content-Transfer-Encoding: 7bit 



<h1><strong>Dear X, check the newsletter ,<br></strong></h1> <img src='' /> 

----==_mimepart_5846c9caf15a_5983c9fd8989e5 

Content-Type: image/jpeg; 

filename=happy_image.jpg 

Content-Transfer-Encoding: base64 

Content-Disposition: attachment; 

filename=happy_image.jpg 

Content-ID: <[email protected]> 



/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQE 

BQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/ 

2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU 

FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAHiAuMDASIAAhEBAxEB/8QA 

HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF 

BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK 

FhcYGQ== 



----==_mimepart_5846c9caf15a_5983c9fd8989e5-- 

Antwort

0

sollten Sie in der Lage sein, BASE64 kodieren das Bild, und verwenden Sie die resultierende Zeichenfolge als src des img-Tag.

Zum Beispiel:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWQAAAD8CAYAAAB..."/> 

Auch stellen Sie sicher, dass Ihr Content-Typ als text/html gesetzt statt text/plain. Wenn man sich die Mail anschaut, sieht es so aus, als wäre sie auf Letzteres eingestellt, weshalb Bilder nicht gerendert und Tags als Text gerendert werden. Fügen Sie den folgenden auf Ihre Argumente text/html Inhaltstyp zu verwenden:

:headers => { 'Content-Type' => 'text/html' }

+0

Hallo, ich habe diese Methode schon ausprobiert, aber wenn ich Mail anzuzeigen, zeigt es reine String mit img-Tag wie „“ –

+0

Ah. Sie müssen den Inhaltstyp in der Kopfzeile auf HTML setzen, sonst wird er als Text behandelt. Wenn Sie Ihre ursprüngliche Frage betrachten, scheint der Inhaltstyp derzeit als "text/plain" eingestellt zu sein. Ich habe die Frage aktualisiert, um dies hinzuzufügen. –

+0

Wie Sie gesagt haben, habe ich Header-Option hinzugefügt, aber das Ergebnis ist das gleiche für mich. Wie diese reine Schnur ''

Verwandte Themen