Squeak SecureSMTPClient 发送 HTML 封邮件

Squeak SecureSMTPClient to send HTML email

我无法弄清楚如何使用 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.

This question 是相关的,但是答案取决于 class 在 Pharo 中可用但在 Squeak 中不可用。

我相信您遇到了系统未维护的部分。据我所知,您应该在示例中使用 #bodyTextFormatted 而不是 #text。对于 html MIME 类型,该方法将生成正确的 body。不幸的是,那里使用的 HtmlParser 不是图像的一部分,我可以找到与 MailMessage 一起使用的旧版本的 none(即以某种方式产生异常) .因此,我不确定 body 是否会被正确编码。

除此之外,您可以像在示例中所做的那样设置额外的 headers:

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

所以尝试使用这些额外的 headers。