oracle+mail+ORA-29279错误提示
发送mail的时候,会提示如下错误提示:
ORA-20000: ORA-29279: SMTP permanent error: 554 sorry, that message size exceeds limit 收信者的邮箱已满或单封邮件过大(#5.3.4)
ORA-29279: SMTP permanent error: 554 sorry, that message size exceeds limit 收信者的邮箱已满或单封邮件过大(#5.3.4)
ORA-06512: at "ASSET.PROC_SMAIL", line 60
ORA-06512: at line 1
问题分析:直接使用邮箱可以正常收发邮件,同时可以上传附件,所以应该不存在oracle提示的问题“收信者的邮箱已满或单封邮件过大”?
请大家帮忙看下,谢谢!
procedure+mail
(邮件的内容就是几个文字)
CREATE OR REPLACE PROCEDURE PROC_SMAIL IS
P_FROM VARCHAR2(32) := 'admin@**.com';
P_FROMA VARCHAR2(128) := 'admin@**.com';
P_TO VARCHAR2(32) := 'xiny@**.com';
P_TOA VARCHAR2(128) := 'xiny@**.com';
P_CC VARCHAR2(32) := 'ffit@**.com';
P_CCA VARCHAR2(128) := 'ffit@**.com';
P_SUBJ VARCHAR2(128);
P_MESS VARCHAR2(4000);
P_MAILHOST VARCHAR2(32) := '134.128.**.**';
V_MAILHOST VARCHAR2(30) := P_MAILHOST;
V_CONN UTL_SMTP.CONNECTION;
V_MSG VARCHAR2(4000);
V_PORT NUMBER := 25;
--CRLF VARCHAR2(2) := CHR(13) || CHR(10);
icount number;
BEGIN
select count(*) into icount from v_dept_diff_xinyi;
if iCount > 0 then
P_SUBJ := '关于**********的通知';
P_MESS := '*****系统部门差异情况表:共有 ' || icount || ' 个差异'
|| UTL_TCP.CRLF || UTL_TCP.CRLF
|| 'http://134.128.**.**/asset/sysinfo/DeptDiffXinyiAction.do';
--创建要发送的邮件内容 注意报头信息和邮件正文之间要空一行
V_MSG := 'Date:' || TO_CHAR(SYSDATE, 'yyyymmdd hh24:mi:ss') ||
UTL_TCP.CRLF || 'From: ' || P_FROM || '<' || P_FROMA || '>' ||
UTL_TCP.CRLF || 'To: ' || P_TO || '<' || P_TOA || '>' ||
UTL_TCP.CRLF || 'Cc: ' || P_CC || '<' || P_CCA || '>' ||
UTL_TCP.CRLF || 'Subject: ' || P_SUBJ || UTL_TCP.CRLF ||
UTL_TCP.CRLF || P_MESS
;
--V_MSG := '';
V_CONN := UTL_SMTP.OPEN_CONNECTION(V_MAILHOST, V_PORT);
--授权认证
/*
UTL_SMTP.COMMAND(V_CONN, 'AUTH LOGIN');
UTL_SMTP.COMMAND(V_CONN, UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(P_USER))));
UTL_SMTP.COMMAND(V_CONN, UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW(P_ASS))));
*/
UTL_SMTP.HELO(V_CONN, V_MAILHOST);
UTL_SMTP.MAIL(V_CONN, P_FROM);
UTL_SMTP.RCPT(V_CONN, P_TO);
IF P_CCA IS NOT NULL THEN
UTL_SMTP.RCPT(V_CONN, P_CCA);
END IF;
--UTL_SMTP.DATA(V_CONN, V_MSG);
UTL_SMTP.OPEN_DATA(V_CONN);
UTL_SMTP.WRITE_RAW_DATA(V_CONN, UTL_RAW.CAST_TO_RAW(V_MSG));
UTL_SMTP.CLOSE_DATA(V_CONN);
UTL_SMTP.QUIT(V_CONN);
else
null;
end if;
commit;
EXCEPTION WHEN OTHERS THEN
null;
RAISE_APPLICATION_ERROR(-20000, DBMS_UTILITY.FORMAT_ERROR_STACK ||SQLERRM);
DBMS_OUTPUT.PUT_LINE(DBMS_UTILITY.FORMAT_ERROR_STACK);
DBMS_OUTPUT.PUT_LINE(DBMS_UTILITY.FORMAT_CALL_STACK);
END;