0
У меня есть постфиксная служба на моем Linux Linux, и они хорошо работают. Я использую функциюОтправить письмо от Oracle 12c с postfix на Oracle Linux 7
create or replace procedure Send_Mail(Msg_To varchar2, Msg_Subject varchar2, Msg_Text varchar2) is
c Utl_Smtp.Connection;
Rc integer;
Msg_From varchar2(50) := '[email protected]'; -- email of my company which hosted on Gmail
Mailhost varchar2(30) := 'smtp.gmail.com';
begin
c := Utl_Smtp.Open_Connection(Mailhost, 587);
Utl_Smtp.Helo(c, Mailhost);
Utl_Smtp.StartTLS(c);
Utl_Smtp.Mail(c, Msg_From);
Utl_Smtp.Rcpt(c, Msg_To);
Utl_Smtp.Data(c,
'From: Oracle Database' || Utl_Tcp.Crlf || 'To: ' || Msg_To || Utl_Tcp.Crlf || 'Subject: ' || Msg_Subject || Utl_Tcp.Crlf ||
Msg_Text);
Utl_Smtp.Quit(c);
exception
when Utl_Smtp.Invalid_Operation then
Dbms_Output.Put_Line(' Invalid Operation in Mail attempt
using UTL_SMTP.');
when Utl_Smtp.Transient_Error then
Dbms_Output.Put_Line(' Temporary e-mail issue - try again');
when Utl_Smtp.Permanent_Error then
Dbms_Output.Put_Line(' Permanent Error Encountered.');
end;
, который я нашел на http://www.dba-oracle.com/t_utl_smtp_utility.htm
когда я запускаю функцию
BEGIN
send_mail(msg_to => '[email protected]',
msg_subject => 'Test subject',
msg_text => 'Test text');
END;
Я получаю сообщение об ошибке:
ORA-29279: SMTP permanent error: 530 5.7.0 Must issue a STARTTLS command first. im3sm2477330wjb.13 - gsmtp /* 132/5 selected symbols */
, что я сделал неправильно или что я должен сделать?
Спасибо, @AlexPoole, но теперь это ORA-29279: постоянная ошибка SMTP: 503 5.5.1 EHLO/HELO. r7sm3173844wjp.43 - gsmtp – a1b0r
Итак, сначала сделайте вызов «ehlo». Документы также говорят, что вам нужно переиздать это позже, хотя их пример не соответствует. Возможно, вам нужно будет предоставить больше аргументов для вызова 'open_connection', как показано в документах. –
Я переписываю код, о котором идет речь, и теперь у меня есть PLS-00905: объект SYS.SEND_MAIL недействителен/*; = # 59 */ – a1b0r