Hei*_*nzi 3 postfix-mta smtp sendmail utf-8 diacritics
我写了一个需要发送电子邮件的 C++ 应用程序。
它通过调用
/usr/sbin/sendmail -f [sender] -t
Run Code Online (Sandbox Code Playgroud)
然后将邮件标题和正文写入 sendmail 进程的标准输入。
一切正常 - 除了变音或其他非 ASCII 字符。我怎样才能让它们正常工作?
我已经尝试设置
Content-Type: plain-text; charset=ISO-8859-1
Run Code Online (Sandbox Code Playgroud)
作为邮件标题,也
Content-Type: plain-text; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)
没有改变任何东西。似乎这个标题被忽略了。
电子邮件消息中除 ASCII 以外的任何内容通常都应编码为Quoted-printable或base64。在Content-Transfer-Encoding和Content-Type头部,然后设定相应使收件人知道如何解码消息回非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"
Run Code Online (Sandbox Code Playgroud)
在对数据进行 base64 编码之前,您需要指定用于将字符串转换为二进制的任何字符编码。
此示例使用 utf-8,因为这是通用平台默认设置,因此大多数 shell 在将字符串转换为二进制并将其传递给base64stdin时会使用 utf-8 。
| 归档时间: |
|
| 查看次数: |
7957 次 |
| 最近记录: |