2016-06-03 10 views
1

Ich habe Probleme herauszufinden, wie Sie eine html e-Mail mit SecureSMTPClient senden. Die E-Mail-Client zeigt immer es als Plain-Text, was bedeutet, dass der MIME nicht gesetzt zu werden, das heißt SecureSMTPClient vergisst senden an:Squeak SecureSMTPClient zum Senden von HTML-E-Mails

MIME-Version: 1.0 
Content-Type: text/html; charset=utf-8 

eventhough text/html I angeben.

Hier ist der Code

title:='title1'. 
content:='<a href="myurl">a link</a>'. 

smtpClient := SecureSMTPClient new. 
smtpClient user: senderMailAddress. 
smtpClient password: pw. 
smtpClient openOnHost: (NetNameResolver addressForName: 'smtp.gmail.com') port: 465. 

message := MailMessage empty. 
message setField: 'from' toString: senderMailAddress. 
message setField: 'to' toString: rcvrAddress. 
message setField: 'subject' toString: title. 
msgBody:= MIMEDocument contentType: 'text/html' content: content. 
message body: msgBody. 

smtpClient mailFrom: senderMailAddress to: {rcvrAddress} text: message text. 
smtpClient quit. 

This question verwandt ist, aber die Antwort hängt von einer Klasse in Pharo zur Verfügung, aber nicht quietschen.

Antwort

3

Ich glaube, dass Sie einen nicht gepflegten Teil des Systems getroffen haben. Soweit ich das beurteilen kann, sollten Sie in Ihrem Beispiel #bodyTextFormatted anstelle von #text verwenden. Für den HTML-MIME-Typ würde diese Methode dann den korrekten Body generieren. Leider HtmlParser, die dort verwendet wird, ist nicht Teil des Bildes und keine der älteren Versionen, die ich finden konnte, arbeiten mit MailMessage (d. H. Eine Ausnahme wird auf die eine oder andere Weise erzeugt). Ich bin mir daher nicht sicher, ob der Körper richtig kodiert wird.

Abgesehen davon, können Sie einfach festlegen zusätzliche Header wie Sie bereits in Ihrem Beispiel haben:

message 
    setField: 'content-type' toString: 'text/html; charset=utf8'; 
    setField: 'mime-version' toString: '1.0'. 

es also einen Versuch mit diesen zusätzlichen Header geben.

+0

Die Einstellung dieser Felder funktionierte eindeutig großartig. (Für zukünftige Besucher: Ich hatte #bodyTextFormatted zuvor versucht, und es gibt die Nachricht als Nur-Körper zurück, d. H. Kein e-Mail-Titel.) –

+0

Richtig, ich habe vergessen, das zu erwähnen. Der Grund dafür ist, dass der 'HtmlParser' nicht Teil des Systems ist und der Fallback '# text' ist, wie Sie es ohnehin getan haben. –

+0

Sie haben mir mit dieser Antwort sehr geholfen. Jetzt habe ich eine ähnliche Frage gestellt. Wenn Sie interessiert sind: http://stackoverflow.com/questions/38049364/squeak-smtps-on-linux –