android - 如何以正确的方式将 UTF8 格式化为主题 header ?

标签 android linux bash email

我正在测试给自己发送一些带有 ä、ü、ö 等德语变音符号的电子邮件。 这是我使用的命令:

echo "ä ü ö" | mail -a "Content-Type: text/plain; charset=UTF-8" -s "test ä ü ö" test@example.com

但我在标准的 Android 电子邮件客户端上得到了这个:

test@example.com
test ?? ?? ??
ä ü ö

如果我通过 Thunderbird 或类似工具给自己写一封电子邮件,效果会很好。 有谁知道如何解决这个问题?

最佳答案

MIME (Content-Type:) header 指定电子邮件正文的编码。
[顺便说一下,您的 MIME(内容类型) header 不完整]

还有另一种编码 ( RFC-2047 ) 用于电子邮件标题 (Subject:,From:,...)。

请在下方找到“perl oneliner”进行此类转换的答案链接。
https://superuser.com/a/972248/209289

如果您使用基于 utf-8 的语言环境,下面的脚本应该可以工作。
[ 它似乎适用于 LANG=en_US.UTF-8 ]

#!/bin/sh
SUBJECT="test ä ü ö"
SUBJECT=`perl -MEncode -CA -e 'print Encode::encode("MIME-Q",$ARGV[0])' "$SUBJECT"`

/usr/sbin/sendmail -i -- test@example.com <<END
Subject: $SUBJECT
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

ä ü ö
END

关于android - 如何以正确的方式将 UTF8 格式化为主题 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37068990/

相关文章:

java - 进入新 Activity 时在后台运行应用程序

android - 横跨 View 的对角线

linux - 有没有办法杀死在某个目录中/从某个目录运行的所有进程?

linux - 命令在命令行和脚本文件中产生不同的结果

c-copy_to_user : how to read a struct type value of kernel space in the user space?

linux - 如何完全静音 bash 脚本的 vlc 输出?

android - MediaRecorder 视频帧率

android - IncompatibleClassChangeError com.google.gson.annotations.SerializedName.value

bash - 通过 Shell Bash 脚本从 build.gradle 获取 Gradle 项目版本

bash - 命令运行时执行 bash 循环