Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

how to use gmail SMTP server to sending mail through PL/SQL;?

679738Jan 23 2009 — edited Jan 23 2009
Dear 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
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Feb 20 2009
Added on Jan 23 2009
1 comment
3,462 views