Go 如何在使用chilkat发送电子邮件时正确显示字符?

Go 如何在使用chilkat发送电子邮件时正确显示字符?,go,chilkat,chilkat-email,Go,Chilkat,Chilkat Email,我使用chilkat 9.5.0.80 问题在于,电子邮件中的某些字符看起来是错误的。例如,此è在收件箱邮箱中显示为Ã。我希望它在设置时显示-è 这是最小可复制代码: email := chilkat.NewEmail() email.SetCharset("utf-8") email.AddTo("", toEmail) email.SetSubject("test") email.SetHtmlBody("è")

我使用chilkat 9.5.0.80

问题在于,电子邮件中的某些字符看起来是错误的。例如,此
è
在收件箱邮箱中显示为
Ã
。我希望它在设置时显示-
è

这是最小可复制代码:

email := chilkat.NewEmail()
email.SetCharset("utf-8")
email.AddTo("", toEmail)
email.SetSubject("test")
email.SetHtmlBody("è")
mailMan := chilkat.NewMailMan()
mailMan.SetSmtpHost(host)
mailMan.SetSmtpPort(25)
mailMan.SetSmtpUsername(username)
mailMan.SetSmtpPassword(password)
mailMan.SendEmail(email)
我还注意到,在不同的smtp服务器mime中,html主体部分的头看起来是不同的。 第一个选项显示正确,如下所示:

--------------050209010604000502060206
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset=iso-8859-1
--------------030709010607010008060507
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset=utf-8
第二个是错误的,看起来像:

--------------050209010604000502060206
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset=iso-8859-1
--------------030709010607010008060507
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset=utf-8
字符集是不同的

我想如果我将html主体设置为base64,它将正确显示。但我在奇尔卡特没有发现这种可能性

还尝试使用有效的html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
è
</body>
</html>

无标题文件
è

我在问题中提出的问题是正确的,如何使用chilkat将html正文设置为base64?因为以下代码在某些smtp服务器上正确显示特殊字符,但在某些服务器上显示错误:

email := chilkat.NewEmail()
email.SetCharset("utf-8")
email.AddTo("", toEmail)
email.SetSubject("test")
email.SetHtmlBody("è")
mailMan := chilkat.NewMailMan()
mailMan.SetSmtpHost(host)
mailMan.SetSmtpPort(25)
mailMan.SetSmtpUsername(username)
mailMan.SetSmtpPassword(password)
mailMan.SendEmail(email)
下一个解决方案允许将html正文mime部分设置为base64并发送,它在不同的smtp服务器上正确显示:

email := chilkat.NewEmail()
part := chilkat.NewMime()
part.SetBodyFromEncoded("base64", 
base64.StdEncoding.EncodeToString([]byte(bodyContent)))
part.SetContentType("text/html")
part.SetCharset("UTF-8")
email.SetFromMimeText(*part.GetMime())

然后您可以将其他字段设置为
电子邮件
对象,如主题等。

这是一个明确的选项。不要问如何发送base64编码的电子邮件。询问如何解决您的实际问题,即断字符。用实际代码更新您的问题,并显示您收到的实际输出,以及您期望的内容。@Flimzy,只需几分钟,如果您尝试将字符集设置为支持您的字符的内容,例如UTF-8@Flimzy yes我尝试了
email.SetCharset(“utf-8”)
但没有改进?