Örnek:
Bu örneğimizde e_mail_message adlı procedure'ımızda 4 tane parametre verip bu parametreleri kullanaraktan istediğimiz kişi ye mail attırırız. 4 parametre istesek de, biz kolaylık olsun diye bunları parametre vermeden program başlamadan bunları belirleriz.
Bunları ayarlarken en önemli işlem l_mailhost parametresinin ayarlanmasıdır. Bu parametre email sunucusunu işaret eder. Eğer bu yanlış olursa programımız çalışmaz.
l_from parametresi mailin kimden geldiğini açıklar. Gerçek bir mail adresi verilmek zorunda değildir; ancak tanımlayıcı olmalıdır. Örnek olarak kullanıcı@makine_adı şeklinde bir formulasyon yapılabilinir.
l_to parametresi mail kime gönderilecekse ona set edilir.
l_subject parametremiz mailin konusunu set eder.
l_mail_conn mail bağlantısını ifade eden standart olarak kullanılan bir parametredir.
Eğer aşağıda verdiğimiz parametreleri kullanmak istemezseniz ":='parametre_degeri'" ni silebilirsiniz. Yani sadece örnek olarak l_mailhost varchar2(64) kalacak şekilde bırakılabilinir. Sonra da procedure çağırılırken
program adının yanında parametre olarak verilir.
create or replace procedure
e_mail_message
(
from_name varchar2,
to_name varchar2,
subject varchar2,
message varchar2
)
is
l_mailhost VARCHAR2(64) := 'smtp_host_adı';
l_from VARCHAR2(64) := 'abc@abc.com.tr';
l_to VARCHAR2(64) := 'berke.oz@abc.com.tr';
l_subject VARCHAR2(64) := 'deneme';
l_mail_conn UTL_SMTP.connection;
BEGIN
l_mail_conn := UTL_SMTP.open_connection(l_mailhost, 25);
UTL_SMTP.helo(l_mail_conn, l_mailhost);
UTL_SMTP.mail(l_mail_conn, l_from);
UTL_SMTP.rcpt(l_mail_conn, l_to);
UTL_SMTP.open_data(l_mail_conn);
--Konu ve To kısmı bu bölümde atandığı için aşağıdaki kısım önemlidir.
UTL_SMTP.write_data(l_mail_conn, 'Date: ' || TO_CHAR(SYSDATE, 'DD-MON-YYYY HH24:MI:SS') || Chr(13));
UTL_SMTP.write_data(l_mail_conn, 'From: ' || l_from || Chr(13));
UTL_SMTP.write_data(l_mail_conn, 'Subject: ' || l_subject || Chr(13));
UTL_SMTP.write_data(l_mail_conn, 'To: ' || l_to || Chr(13));
UTL_SMTP.write_data(l_mail_conn, '' || Chr(13));
FOR i IN 1 .. 10 LOOP
UTL_SMTP.write_data(l_mail_conn, 'This is a test message. Line ' || To_Char(i) || Chr(13));
END LOOP;
UTL_SMTP.close_data(l_mail_conn);
UTL_SMTP.quit(l_mail_conn);
END;
/
Mail Procedure'unu Elle Çalıştırmak:
Burada da yukarıdaki parametrelere sadık kalaraktan mail procedure'umuz çalıştırabiliriz.
exec send_mail('abc@abc.com.tr','berke.oz@abc.com.tr','Deneme','ABC123');
Hiç yorum yok:
Yorum Gönder