【问题标题】:Squeak SecureSMTPClient to send HTML emailSqueak SecureSMTPClient 发送 HTML 电子邮件
【发布时间】:2016-06-04 16:50:18
【问题描述】:

我无法弄清楚如何使用 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 是相关的,但答案取决于 Pharo 中可用的类,而不是 Squeak。

【问题讨论】:

    标签: smtp smalltalk squeak


    【解决方案1】:

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

    除此之外,您可以像在示例中所做的那样设置其他标题:

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

    所以试试这些额外的标题。

    【讨论】:

    • 明确设置这些字段效果很好。 (对于未来的访问者:我之前尝试过#bodyTextFormatted,它以仅正文的形式返回消息,即没有电子邮件标题。)
    • 是的,我忘了提。这样做的原因是 HtmlParser 不是系统的一部分,并且后备是使用 #text 就像你做的那样。
    • 你在这个答案上帮了我很多忙。现在我发布了另一个类似的问题。如果您有兴趣:stackoverflow.com/questions/38049364/squeak-smtps-on-linux
    猜你喜欢
    • 2011-03-30
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 2012-08-22
    • 2016-03-15
    • 2011-01-01
    • 2011-03-26
    相关资源
    最近更新 更多