UTL_MAIL
은 SMTP
API 인 UTL_SMTP
을 숨 깁니다. 일반적으로 사용하기 쉽기 때문에 바람직합니다. 표시되는 경우 UTL_SMTP
을 입력하면 각 이메일 주소에 utl_smtp.Rcpt
을 입력해야하며 불행히도 한 번에 하나의 이메일 ID 만 허용됩니다. 따라서 두 개 이상의 이메일 주소에 대해 이렇게 말한 경우 기본 로직은 이메일 주소를 반복하고 각 이메일 주소에 utl_smtp.Rcpt
을 호출합니다. 이것에 대한 더 나은 해결책은 전자 우편 배포 목록, 즉 다른 이메일 아이디 그룹을 가진 하나의 이메일 아이디를 사용하는 것입니다. 그래서, UTL_SMTP
으로 내가 당신의 코드처럼 보이는 방법으로 어떤 나쁜 프로그래밍, 여러 이메일 id's.Oracle 엔진이있는 경우 그것을 할 수는 오히려 유일한 방법이 표시되지 않는
declare
v_From VARCHAR2(80) := '[email protected]';
v_cc VARCHAR2(80) := 'geth[email protected]';
v_Recipient VARCHAR2(80) := '[email protected]';
v_Subject VARCHAR2(80) := 'test Subject';
v_Mail_Host VARCHAR2(50) := 'hub.fun.com';
v_Mail_Conn utl_smtp.Connection;
crlf VARCHAR2(2) := chr(13)||chr(10);
begin
v_Mail_Conn := utl_smtp.Open_Connection(v_Mail_Host, 25);
utl_smtp.Helo(v_Mail_Conn, v_Mail_Host);
utl_smtp.Mail(v_Mail_Conn, v_From);
utl_smtp.Rcpt(v_Mail_Conn, v_Recipient);
utl_smtp.Rcpt(v_Mail_Conn, v_cc); -- To CC recepient
utl_smtp.Data(v_Mail_Conn,
'Date: ' || to_char(sysdate, 'Dy, DD Mon YYYY hh24:mi:ss') || crlf ||
'From: ' || v_From || crlf ||
'Subject: '|| v_Subject || crlf ||
'To: ' || v_Recipient || crlf ||
'Cc: ' || v_cc || crlf ||
'Content-Type: text/html;' ||crlf ||
'Hello this is a test email');
utl_smtp.Quit(v_mail_conn);
end;
below-과 같이 보입니다 대기열에 메시지를 제출하는 것과 같이 각 이메일 ID에 대해 (사용자가 지정한대로) SMTP 서버에 이메일 페이로드를 제출해야합니다. 오히려 분명한 제안은 균등하게 분산 된 이메일 ID가 여러 개있는
Distribution List 두 개를 만들고 실제 이메일 ID가 아닌 DL ID를 사용하는 것입니다.
이것은 내 "Ask Tom"질문 중 하나입니다. UTL_MAIL
는 쉼표로 구분 된 이메일 주소를 수용 할 수있는
또 다른 빠른 방법은
BEGIN
...
email_list VARCHAR2(10000) := NULL;
email_count NUMBER(10) := 0;
FOR c_rec in CUR_person
LOOP
email_list := c_rec.CUR_person || ' , ' || email_list;
email_count := email_count +1;
if (email_count = 100) --100 email ids at a time
then
UTL_MAIL.send(sender => '[email protected]',
recipients => email_list,
subject => 'Test Mail',
message => 'Hello World',
mime_type => 'text/html');
email_list := NULL;
email_count := 0;
end if;
END LOOP
...
END;
/
예, UTL_MAIL.send의 각 실행이 열리고로 삼았, 이메일 주소의 쉼표로 구분 된 문자열을 구축하기 위해 코드를 수정하는 것 메일 서버에 대한 연결을 닫습니다. 그러나 이것이 문제인지 여부는 처리중인 행 수, 이메일에있는 데이터의 양 및 프로 시저가 호출되는 빈도에 따라 달라집니다. 숫자가 낮 으면 큰 문제가되지 않을 것입니다. –