我尝试使用 utl_smtp 和 Oracle 发送一封电子邮件,其中包括挪威字符 (å æ ø)。否则字符会在数据库中正确存储和显示,但在电子邮件中显示为问号。
我的数据库字符集是 WE8MSWIN1252
我在电子邮件中尝试了不同的 Content-Type mime 标头,包括“text/plain; charset="win-1252"',这似乎没有帮助。
我尝试使用 utl_smtp 和 Oracle 发送一封电子邮件,其中包括挪威字符 (å æ ø)。否则字符会在数据库中正确存储和显示,但在电子邮件中显示为问号。
我的数据库字符集是 WE8MSWIN1252
我在电子邮件中尝试了不同的 Content-Type mime 标头,包括“text/plain; charset="win-1252"',这似乎没有帮助。
默认情况下 smtp 是 7bit ascii(有点老技术 :)。您必须使用UTL_SMTP.write_data
并来自文档:
使用发送的文本 (VARCHAR2) 数据在发送
WRITE_DATA
前转换为 US7ASCII。如果文本包含多字节字符,则文本中无法转换为 US7ASCII 的每个多字节字符将替换为“?” 特点。如果使用 EHLO 子程序与 SMTP 服务器协商 8BITMIME 扩展名,则可以通过首先使用UTL_RAW
包将文本转换为 RAW 来发送多字节 VARCHAR2 数据,然后使用WRITE_RAW_DATA
.
OTN 上有一个示例演示包,展示了如何发送多字节电子邮件。