how to use gmail SMTP server to sending mail through PL/SQL;?
679738Jan 23 2009 — edited Jan 23 2009Dear all
my normal procedure is running well when am using own SMTP server.
the procedure is
CREATE OR REPLACE PROCEDURE Send_Mail
(SENDER IN VARCHAR2,
RECIPIENT VARCHAR2,
SUBJ IN VARCHAR2,
BODY IN VARCHAR2,
CC_RECIPIENT IN VARCHAR2)IS
CONNECTION UTL_SMTP.CONNECTION ;
V_REPLY UTL_SMTP.REPLY;
MESSAGE VARCHAR2(32767) ;
CRLF VARCHAR2(2):=CHR(13)||CHR(10);
BEGIN
CONNECTION := UTL_SMTP.OPEN_CONNECTION('mail.osourceindia.com',25) ;
V_REPLY := UTL_SMTP.helo(CONNECTION,'mail.osourceindia.com') ;
-- utl_smtp.command( CONNECTION, 'AUTH LOGIN');
-- utl_smtp.command( CONNECTION, utl_raw.cast_to_varchar2( utl_encode.base64_encode( utl_raw.cast_to_raw( 'mahendrak-osourceindia' ))) );
-- utl_smtp.command( CONNECTION, utl_raw.cast_to_varchar2( utl_encode.base64_encode( utl_raw.cast_to_raw( 'oracle11' ))) );
V_REPLY := UTL_SMTP.MAIL(CONNECTION,SENDER);
V_REPLY := UTL_SMTP.RCPT(CONNECTION,RECIPIENT);
IF CC_RECIPIENT IS NOT NULL THEN
V_REPLY :=UTL_SMTP.RCPT(CONNECTION,CC_RECIPIENT);
END IF;
--newly added by awadh
UTL_SMTP.open_data (connection);
MESSAGE :='DATE: '||TO_CHAR(SYSDATE,'DD-MON-YYYY HH:MI PM')||CRLF||
'FROM: '||SENDER||CRLF||
'TO: '||RECIPIENT||CRLF||
'CC: '||CC_RECIPIENT||CRLF||
'SUBJECT: '||SUBJ||CRLF||
''||CRLF||
BODY;
UTL_SMTP.write_data(CONNECTION,'MIME-Version: 1.0'
||CRLF||'Content-type: text/html' || CRLF||Message);
UTL_SMTP.close_data (CONNECTION);
UTL_SMTP.quit (CONNECTION);
EXCEPTION
WHEN UTL_SMTP.INVALID_OPERATION THEN
dbms_output.put_line(' Invalid Operation in Mail attempt using UTL_SMTP.');
dbms_output.put_line(SQLCODE||SQLERRM);
WHEN UTL_SMTP.TRANSIENT_ERROR THEN
dbms_output.put_line(' Temporary e-mail issue - try again'|| SQLCODE || SQLERRM);
WHEN UTL_SMTP.PERMANENT_ERROR THEN
dbms_output.put_line(' Permanent Error Encountered.');
dbms_output.put_line(SQLCODE||SQLERRM);
WHEN OTHERS THEN
dbms_output.put_line(SQLCODE || SQLERRM);
END Send_Mail;
/
above procedure is correct
but when i use
below procedure
CREATE OR REPLACE PROCEDURE Send_Mailjan09gmail
( sender IN VARCHAR2,
recipient IN VARCHAR2,
subject IN VARCHAR2,
message IN VARCHAR2)
IS
mailhost VARCHAR2(30) := 'smtp.gmail.com';
--mailhost VARCHAR2(30) := 'smtp.google.com';
mail_conn utl_smtp.connection;
crlf VARCHAR2( 2 ):= CHR( 13 ) || CHR( 10 );
mesg VARCHAR2( 1000 );
BEGIN
utl_smtp.command(mail_conn,'STARTTLS');
mail_conn := utl_smtp.open_connection(mailhost,25);
mesg:= 'Date: ' || TO_CHAR( SYSDATE, 'dd Mon yy hh24:mi:ss' ) || crlf ||
'From: <'||sender||'>' || crlf ||
'Subject: '||subject || crlf ||
'To: '||recipient || crlf ||
'' || crlf || message;
utl_smtp.helo(mail_conn, mailhost);
utl_smtp.mail(mail_conn, sender);
utl_smtp.rcpt(mail_conn, recipient);
utl_smtp.data(mail_conn, mesg);
utl_smtp.quit(mail_conn);
END;
/
it will generate error
Permanent Error Encountered.
-29279ORA-29279: SMTP permanent error: 530 5.7.0 Must issue a STARTTLS command first. f21sm21030772rvb.7
if any idea give us some hints and solutions.
thank
Rupesh
Edited by: user1157479 on Jan 23, 2009 12:43 AM