PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

sp_send_dbmail alternativa no postgres? Maneira fácil de enviar relatórios de e-mail do Postgres?


Você pode usar o pgMail para enviar e-mails de dentro do PostgreSQL.

Pré-requisitos:

Antes de poder usar o pgMail, você deve instalar a linguagem procedural TCL/u. TCL/u é uma versão ILIMITADA do TCL que seu banco de dados pode usar em suas funções armazenadas. Antes de enlouquecer instalando a linguagem procedural TCL irrestrita em todos os seus bancos de dados, leve em consideração que você deve preparar as precauções de segurança adequadas ao adicionar a linguagem TCL/u ao seu banco de dados! Eu não serei responsável por servidores mal configurados permitindo que usuários perigosos façam coisas ruins!

Para instalar a linguagem procedural TCL/u, você deve ter compilado (ou usado pacotes binários) e instalado as extensões TCL do PostgreSQL. Quando tiver certeza de que isso foi concluído, basta digitar o seguinte no prompt do shell do unix como administrador do banco de dados.
# createlang pltclu [YOUR DATABASE NAME]

No lugar de [YOUR DATABASE NAME] , coloque o nome do banco de dados ao qual você adicionará o procedimento armazenado. Se você quiser que ele seja adicionado a todos os NOVOS bancos de dados, use "template1" como seu nome de banco de dados.

Antes de adicionar um novo procedimento ao banco de dados, faça primeiro:

Substitua o texto <ENTER YOUR MAILSERVER HERE> com o nome de domínio totalmente qualificado para o seu servidor de correio. ou seja, mail.server.com.

Substitua o texto <ENTER YOUR DATABASESERVER HERE> com o nome de domínio totalmente qualificado para seu servidor de banco de dados. ou seja, db.server.com.

Depois de ter feito o acima, você está pronto para ir.

Após esta etapa, use a interface psql para adicionar a função pgMail. Basta copiar o conteúdo do arquivo pgmail.sql e colá-lo em sua janela. Você também pode carregá-lo diretamente da linha de comando digitando:
# psql -e [YOUR DATABASE NAME] < pgMail.sql

Depois de instalar a função armazenada, basta chamar o procedimento da seguinte maneira.
select pgmail('Send From ','Send To ','Subject goes here','Plaintext message body here.');

select pgmail('Send From ','Send To ','Subject goes here','','HTML message body here.');

Ou agora, MIME multipartes!
select pgmail('Send From ','Send To ', 'Subject goes here','Plaintext message body here.', 'HTML message body here.');

Nos campos "Enviar de" e "Enviar para", você pode incluir apenas o e-mail ou o e-mail entre <> com um nome em texto simples.

Testando sua instalação

Eu incluí um exemplo para você tentar. Você DEVE PRIMEIRO substituir a string no script example.execute.sql pelo seu endereço de e-mail real e instalar a linguagem plpgsql exatamente como fez com o pltclu acima. Você pode fazer isso digitando um createlang [YOUR DATABASE NAME] plpgsql .

Quando isso estiver concluído, primeiro execute o example.setup.sql. Em seguida, execute o script example.execute.sql. Desde que tudo esteja funcionando bem, você verá 2 e-mails em sua caixa de correio. Para remover este exemplo, execute o example.cleanup.sql roteiro.

Autenticação SMTP

O pgMail não suporta autenticação SMTP. A maioria das pessoas que o usam configuram um servidor de e-mail local no servidor de banco de dados para enfileiramento local e, em seguida, usam essa configuração para qualquer retransmissão necessária (com autenticação). Ou, como alternativa, geralmente há uma regra especial feita no arquivo /etc/mail/access (ou equivalente) para permitir a retransmissão desse IP usado pelo servidor de banco de dados. Obviamente, a última opção não funciona com o GMail.

Parte do raciocínio por trás disso é que a autenticação será problemática na natureza transacional do pgMail para grandes trabalhos. A solução ideal seria descartar um servidor EXIM no servidor de banco de dados e fazer com que ele tratasse de qualquer tipo de autenticação como um servidor de retransmissão inteligente. Aqui está um link com mais informações sobre como configurar o servidor SMTP .

Documentação:http://brandolabs.com/pgmail