从 Oracle DBMS 向 Outlook 邮件发送一封包含西里尔字符的信时,输出为问号。
我不明白如何转换字符串以使文本可读。
我通过以下方式发货:
CREATE OR REPLACE PROCEDURE send_mail (p_to IN VARCHAR2,
p_from IN VARCHAR2,
p_message IN VARCHAR2,
p_smtp_host IN VARCHAR2,
p_smtp_port IN NUMBER DEFAULT 25)
AS
l_mail_conn UTL_SMTP.connection;
BEGIN
l_mail_conn := UTL_SMTP.open_connection(p_smtp_host, p_smtp_port);
UTL_SMTP.helo(l_mail_conn, p_smtp_host);
UTL_SMTP.mail(l_mail_conn, p_from);
UTL_SMTP.rcpt(l_mail_conn, p_to);
UTL_SMTP.data(l_mail_conn, 'Привет мир!' || UTL_TCP.crlf || UTL_TCP.crlf);
UTL_SMTP.quit(l_mail_conn);
END;
PS:Oracle 数据库 10g 发布 10.2.0.3.0 - 生产
通常,电子邮件的正文只能包含 7 位 US7ASCII 字符。
因此,包含 US7ASCII 以外的字符的内容必须编码为quoted-printable或base-64,这应在电子邮件标头中指明。该文档说明了以下内容:
例程的最小示例如下所示:
原始结果:
邮件客户端的结果: