utf-8 - 处理后缀 sendmail 中的变音符号(非 ASCII 字符)(在控制台上发送邮件)

标签 utf-8 smtp sendmail postfix-mta diacritics

我编写了一个需要发送电子邮件的 C++ 应用程序。

它通过调用来做到这一点

/usr/sbin/sendmail -f [sender] -t

然后将邮件标题和正文写入 sendmail 进程的标准输入。

一切正常 - 除了变音符号或其他非 ASCII 字符。 我怎样才能使它们正常工作?

我已经尝试设置

Content-Type: plain-text; charset=ISO-8859-1  

作为邮件标题以及

Content-Type: plain-text; charset=UTF-8

没有任何改变。似乎这个 header 被忽略了。

最佳答案

电子邮件消息中除 ASCII 之外的任何内容通常应编码为 quoted-printablebase64 .然后相应地设置 Content-Transfer-EncodingContent-Type header ,以便收件人知道如何将消息解码回非 ASCII 文本。

这是一个 bash 示例,说明了如何在命令行上完成此操作:

#!/bin/bash
message="Hellö ümläüts"
encoded=$(base64 <<< "$message")

/usr/sbin/sendmail -t <<< "From: sender@example.com
To: recipient@example.com
Subject: Dear friend
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"

$encoded"

在对数据进行 base64 编码之前,您需要指定用于将字符串转换为二进制的任何字符编码。

此示例使用 utf-8,因为这是常见的平台默认设置,因此大多数 shell 在将字符串转换为二进制并将其传递到标准输入上的 base64 时会使用 utf-8。

关于utf-8 - 处理后缀 sendmail 中的变音符号(非 ASCII 字符)(在控制台上发送邮件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8235182/

相关文章:

smtp - 通过 Gmail SMTP 发送电子邮件时出错 - "Please log in via your web browser and then try again. 534-5.7.14"

python - 如何使用 Python 以 Gmail 作为提供商发送电子邮件?

php - 在php中发送邮件的困难

windows - 在 Windows 上的 IEx(交互式 Elixir 控制台)中启用 UTF8 字符

php - 如何在 Linux 上使用 PHP 从本地主机发送电子邮件

linux - 电子邮件主机被带有公鸡的网站标记为垃圾邮件骡子

email - 127.0.0.1拒绝sendmail连接

c# - 如何将 UTF-8 字符串转换为 Unicode?

python - 中文统一码问题?

php - 比较 PHP 中的 Unicode 字符