Squeak SecureSMTPClient发送HTML电子邮件

Squeak SecureSMTPClient发送HTML电子邮件,smtp,smalltalk,squeak,Smtp,Smalltalk,Squeak,我无法确定如何使用SecureSMTPClient发送html电子邮件。电子邮件客户端始终将其显示为纯文本,这意味着未设置MIME,即SecureSMTPClient忘记发送: MIME-Version: 1.0 Content-Type: text/html; charset=utf-8 即使我指定text/html 这是密码 title:='title1'. content:='<a href="myurl">a link</a>'. smtpClient :=

我无法确定如何使用SecureSMTPClient发送html电子邮件。电子邮件客户端始终将其显示为纯文本,这意味着未设置MIME,即SecureSMTPClient忘记发送:

MIME-Version: 1.0
Content-Type: text/html; charset=utf-8
即使我指定
text/html

这是密码

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.
标题:='title1'。
内容:=''。
smtpClient:=安全smtpClient新建。
smtpClient用户:senderMailAddress。
smtpClient密码:pw。
smtpClient openOnHost:(NetNameResolver addressForName:'smtp.gmail.com')端口:465。
消息:=邮件消息为空。
消息设置字段:“发件人”到字符串:senderMailAddress。
消息设置字段:“至”toString:rcvrAddress。
消息设置字段:“主题”到字符串:标题。
msgBody:=mimocument contentType:'text/html'内容:内容。
消息正文:msgBody。
smtpClient mailFrom:senderMailAddress to:{rcvrAddress}text:消息文本。
smtpClient退出。

是相关的,但是答案取决于Pharo中可用的类,而不是Squeak。

我相信您已经找到了系统中未维护的部分。据我所知,在您的示例中,您应该使用
#bodyTextFormatted
而不是
#text
。对于html MIME类型,该方法将生成正确的主体。不幸的是,这里使用的
HtmlParser
,不是映像的一部分,而且我找不到任何可以使用
MailMessage
的旧版本(即,以某种方式产生异常)。因此,我不确定身体的编码是否正确

除此之外,您还可以像在示例中一样设置其他标题:

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

因此,请尝试使用这些额外的标题。

明确设置这些字段非常有效。(对于未来的访问者:我以前尝试过bodyTextFormatted,它只以body的形式返回消息,即没有电子邮件标题。)没错,我忘了提到这一点。这是因为
HtmlParser
不是系统的一部分,退一步就是像您那样使用
#text
。您在这个答案上帮了我很多。现在我发布了另一个类似的问题。如果您感兴趣: