Все что угодно, кроме ASCII, в сообщении электронной почты, как правило, должно быть закодировано как quote-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"
Необходимо указать, какую кодировку символов использовали для преобразования строки в двоичную, прежде чем данные были закодированы в base64.
В этом примере используется utf-8, поскольку это стандартная платформа по умолчанию, поэтому большинство оболочек будет использовать utf-8 при преобразовании строки в двоичный файл и передаче его в base64
в stdin.