2010-02-04 3 views
1

UTL_SMTP 패키지를 사용하여 전자 메일을 보내도록 Oracle 함수를 만들었습니다. 내 텍스트에 콜론이 포함되지 않은 경우 콜론이 포함 된 경우 UTL_SMTP.Write_Data에서 텍스트를 보내지 않음

방법 WRITE_DATA 또는 데이터를 사용하여, 전송 된 이메일은 이메일의 본문에 입력 된 텍스트가 포함됩니다.

그러나 텍스트에 콜론이 포함되어 있으면 텍스트가 이메일에 포함되지 않습니다.

이 모든 예는 온라인에서 보았지만 아무 문제가 없음을 나타냅니다. 어떤 생각이 이것의 원인 일 수 있습니까? 이 전송되지 않습니다 UTL_SMTP.write_data(l_mail_conn, 'test');

: UTL_SMTP.write_data(l_mail_conn, 'test:');

을도 수행합니다

이 작동 UTL_SMTP.write_data(l_mail_conn, 'test' || ':');

답변

1

보다는 자신의 쓰기 header

으로 해석하기 할 수있다, 봐 PLCODEBREW에 포함 된 우편 번호에

+0

나는 이것이 원인이라고 확신합니다. "진짜"헤더 다음에 공백 라인을 추가하십시오. - UTL_SMTP.write_data (l_main_conn, '')' –

+0

빈 줄을 놓치지 마십시오. 콜론 (:)을 사용하여 텍스트를 보내는 것을 여전히 거부합니다. UTL_MAIL을 사용해 보겠습니다. – abbott

+0

UTL_MAIL 패키지는 매력처럼 작동합니다. 게시물의 맥락에서 이것을 처리하는 적절한 방법은 무엇입니까? – abbott

0

UTL_SMTP가 작동하지 못했습니다. UTL_SMTP 본문에있는 콜론이 헤더로 해석되어서 탈출 할 수있는 방법을 찾을 수 없었습니다.

10g에서 Oracle이 소개 한 UTL_MAIL 패키지를 사용할 수 있었고 매우 잘 작동했습니다. 필요한 구성 만이 oracle의 smtp_out_server 변수를 메일 서버의 메일 서버 (포트 번호 포함)로 설정하는 것입니다. 단 하나의 메소드 호출 만 필요합니다. PL/SQL에서도 구현하기가 훨씬 깔끔하며 특정 전자 메일 필드 (예 : Subject)를보다 잘 제어 할 수 있으며 첨부 파일도 처리 할 수 ​​있습니다.

1

이 문제도 발생했습니다. UTL_MAIL로 업그레이드 한 것을 감사드립니다. 아래의 내용은 UTL_SMTP를 선호하거나 유지해야하는 사람들을위한 것입니다.

SMS 본문이 'aaa : ...'패턴과 일치하지 않으면 utl_smtp.write_data가 헤더 본문으로 해석하지 않습니다. SMS 본문이이 패턴과 일치하지 않으면 메시지에 공백을 붙이거나 단순히 콜론을 세미콜론 등으로 바꾸고 싶을 수도 있습니다.

다음을 사용하여 문제를 가로 채고 문제를 해결할 수 있습니다.

..... 
/* 999999999 is just an indicitive integer above and beyond the max length of an sms */ 
    IF (INSTR(p_message,':') < NVL(INSTR(p_message,' '),999999999) 
     AND INSTR(p_message,':') != 0) 
    THEN p_message := ' '||p_message; 
    END IF; 

utl_smtp.write_data(l_mail_conn, p_message); 
..... 
관련 문제