segunda-feira, 30 de março de 2009

Rotina para enviar e-mail em PL/SQL sem o servidor SMTP fixo

E ai galera.... bem vindos ao meu blog....

Esse blog tem a finalidade de ajudar os profissionais do mundo Oracle, principalmente os desenvolvedores EBS.

Minha primeira postagem é um problema que acredito que a maioria das pessoas que tenha uma rotina feita em PL/SQL para mandar e-mail tem...

Se você quer uma rotina de mandar e-mail no Oracle usando PL/SQL é muito fácil de encontrar no Google, vai trazer um monte.... mas praticamente todas tem o mesmo problema.... praticamente todas as rotinas estão com o servidor SMTP fixo, um maldito Hard Code!!!! rs... Ai qdo aquele carinha resolve mudar o servidor SMPT ou alterar o nome dele, o desenvolver tem que alterar o código....

Depois de alguns pesquisas no Google, no Metalink, em telas do EBS e em tabelas do EBS montei a seguinte query:
-- Busca servidor SMTP
BEGIN
SELECT a.parameter_value
INTO v_smtp_server
FROM fnd_svc_comp_param_vals a
, fnd_svc_components b
, fnd_svc_comp_params_b c
WHERE b.component_id = a.component_id
AND b.component_type = c.component_type
AND c.parameter_id = a.parameter_id
AND b.component_name LIKE '%Mailer%'
AND c.parameter_name = 'OUTBOUND_SERVER'
AND c.encrypted_flag = 'N';
EXCEPTION
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20000,'Erro ao buscar servidor SMTP - 'SQLERRM);
END;
Essa query esta buscando o servidor SMTP que o Workflow utiliza.

Ai vc pode pensar, mas continua com Hard Code.... bom, tecnicamente sim..... teoricamente não....

O COMPONENT_NAME é o nome dos serviços do Workflow que esta suas configurações e o OUTBOUND_SERVER é o nome da propriedade que esta o servidor do SMTP do Workflow.

Se você precisar alterar o servidor SMTP não será necessário alterar o programa, basta entrar no caminho abaixo do Oracle EBS, geralmente quem faz essa alteração é o DBA:

- Responsabilidade: Administrador de Sistemas
- Workflow
- Service Components
- Workflow Notification Mailer ( Aqui já mostra qual o servidor SMPT)
- Para alterar clicar no botão Edit

A porta por default é a 25.

Isso tudo foi testado usando o Oracle EBS R12 e banco 10.2.0.3.0

Mais uma coisa, desculpa se tiver algum erro de ortografia.... é que o SQL Navigator não tem corretor ortográfico.... heheheheheheeeeeeeee


Abs a todos,