求教用Oracle发送邮件的乱码问题!
DECLARE
SendorAddress Varchar2(30) := 'CIM Oracle Server';
ReceiverAddress varchar2(30) := 'szz@trans-cosmos.com.cn';
EmailServer varchar2(30) := 'mail.trans-cosmos.com.cn';
Port number := 25;
conn UTL_SMTP.CONNECTION;
crlf VARCHAR2( 2 ):= CHR( 13 ) || CHR( 10 );
mesg VARCHAR2( 4000 );
mesg_body varchar2(4000);
BEGIN
conn:= utl_smtp.open_connection( EmailServer, Port );
utl_smtp.helo( conn, EmailServer );
utl_smtp.mail( conn, SendorAddress);
utl_smtp.rcpt( conn, ReceiverAddress );
mesg:=
'Date:' || TO_CHAR( SYSDATE, 'dd Mon yy hh24:mi:ss' ) || crlf ||
'From:' || SendorAddress || crlf ||
'Subject: Sending Mail From Database' || crlf ||
'To: '|| ReceiverAddress || crlf ||
'' || crlf ||
'测试用Oracle发送邮件!' || crlf;
utl_smtp.data( conn, mesg );
utl_smtp.quit( conn );
END;
接收到的邮件不能显示汉字,都是些“??”,请各位帮忙!!!
问题点数:20、回复次数:11Top
1 楼LornWolf(绝地苍狼)回复于 2002-04-04 09:09:38 得分 0
upTop
2 楼LornWolf(绝地苍狼)回复于 2002-04-04 13:28:43 得分 0
DECLARE
SendorAddress Varchar2(30) := 'CIM Oracle Server';
ReceiverAddress varchar2(30) := 'szz@trans-cosmos.com.cn';
EmailServer varchar2(30) := 'mail.trans-cosmos.com.cn';
Port number := 25;
conn UTL_SMTP.CONNECTION;
crlf VARCHAR2( 2 ):= CHR( 13 ) || CHR( 10 );
mesg VARCHAR2( 4000 );
mesg_body varchar2(4000);
BEGIN
conn:= utl_smtp.open_connection( EmailServer, Port );
utl_smtp.helo( conn, EmailServer );
utl_smtp.mail( conn, SendorAddress);
utl_smtp.rcpt( conn, ReceiverAddress );
mesg:=
'Content-Type: text/plain; Charset=GB2312' || crlf ||
'Date:' || TO_CHAR( SYSDATE, 'dd Mon yy hh24:mi:ss' ) || crlf ||
'From:' || SendorAddress || crlf ||
'Subject: Sending Mail From Database' || crlf ||
'To: '|| ReceiverAddress || crlf ||
'Content-Type: text/plain; Charset=GB2312' || crlf ||
'' || crlf ||
'测试用Oracle发送邮件!' || crlf;
utl_smtp.data( conn, mesg );
utl_smtp.quit( conn );
END;Top
3 楼LornWolf(绝地苍狼)回复于 2002-04-04 17:20:00 得分 0
upTop
4 楼KingSunSha(弱水三千)回复于 2002-04-04 17:50:38 得分 20
我没有用过utl_smtp,在资料中也找不到
不过按照经验应该是nls_lang设置有问题,数据库端和客户端设置不同引起的。你能查一下两边的nls_lang设置情况吗?
Top
5 楼mycode(不写代码)回复于 2002-04-04 18:17:29 得分 0
邮件的乱码,与Oracle的字符集无关。因为邮件的内容,在发送前会先编码。
Content-Type: text/plain; Charset=GB2312
表示内容采用的字符集格式。
加上这一条,显示汉字就不会有问题了。
Top
6 楼KingSunSha(弱水三千)回复于 2002-04-04 18:38:01 得分 0
to mycode(不写代码):
可能你漏看了,贴主的代码中已经加入了这段代码,但还是不行。我觉得应该是nls的问题。或者把varchar2类型换成nvarchar2试试看Top
7 楼LornWolf(绝地苍狼)回复于 2002-04-05 09:55:19 得分 0
谢谢两位的帮助,我还想问一下nvarchar2这种数据类型怎么用?Top
8 楼KingSunSha(弱水三千)回复于 2002-04-05 10:15:19 得分 0
nvarchar2的使用和varchar2基本上是一样的,区别在于nvarchar2中每个字的长度取决于nls的设置Top
9 楼LornWolf(绝地苍狼)回复于 2002-04-05 13:31:51 得分 0
我的nls language是AMERICAN,我应该怎么改?
我很菜,请多帮忙,谢谢!!Top
10 楼KingSunSha(弱水三千)回复于 2002-04-05 13:44:16 得分 0
先用select * from v$nls_parameters;察看数据库中nls的设置,然后
在unix下就用export nls_lang=nls_language.nls_territory.nls_characterset来设置环境变量
在nt或者win2k下要修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE下有关的设置Top
11 楼seventeen_seven(dingding)回复于 2002-04-05 14:48:56 得分 0
在nt或者win2k下要修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE下有关的设置: NLS_LANG AMERICAN_AMERICA.US7ASCIITop




