Если у вас возникают проблемы с отправкой данных по электронной почте, одним из подходов будет отправка вашей базы данных в кодировке 64. Это можно легко сделать, используя функции encode_base64
и decode_base64
из встроенного модуля MIME :: Base64 .
Таким образом, при вводе данных в сообщение электронной почты пропустите его через encode_base64
, а при получении данных из сообщения электронной почты пропустите его через decode_base64
. Это будет работать для данных, состоящих из байтов.
Если ваши данные содержат кодовые точки вне диапазона байтов (от 0 до 0xFF), то вам сначала нужно будет закодировать их до байтов, так что вы можете рассмотреть что-то вроде encode_utf8
из встроенного модуля Кодировать , затем используйте decode_utf8
для восстановления исходных данных.
Например:
print $outgoingMessage encode_base64(encode_utf8($some_utf_8_string));
($outgoingMessage
- дескриптор файла для исходящего сообщения.)
Вы должны убедиться, что в вашем сообщении электронной почты тип содержимого соответствующим образом помечен, например:
From: ...
To: ...
Subject: ...
Date: ...
MIME-Version: 1.0
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
V2VsbCBkb25lLCB5b3UndmUgc3VjY2Vzc2Z1bGx5IGRlY29kZWQgdGhlIGJhc2U2NCBkYXRhIGlu
IG15IHN0YWNrb3ZlcmZsb3cuY29tIGFuc3dlci4gVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBv
dmVyIHRoZSBsYXp5IGRvZy4gTm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBtZW4gdG8gY29t
ZSB0byB0aGUgYWlkIG9mIHRoZSBwYXJ0eS4=
Вы должны выбрать подходящий тип контента для ваших данных и указать его в записи типа контента. Поэтому, если вы знаете, что ваш контент является HTML, и вы использовали encode_base64
, тогда запись Content-Type должна выглядеть следующим образом:
Content-Type: text/html; charset="UTF-8"