gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 00:46:49 25 4
gpt4 key购买 nike

我编写了一个需要发送电子邮件的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com