Como automatizar o envio de e-mail quando uma mensagem específica é recebida?

0

Eu uso o aplicativo Buxfer.com para gerenciamento de dinheiro. Este serviço permite reportar despesas enviando um email para um endereço de email especial, privado, atribuído ao usuário pelo Buxfer.

O formato exigido para relatar uma despesa, receita ou transferência é:

<description> [+]<amount> [tags:<tags>] [acct:<account>] [from:<account>] [to:<account>] [date:<date>] [status:<status>] [memo:<memo>]

Elementos em [colchetes] são opcionais. O texto pode ser escrito no campo no título ou no conteúdo da mensagem .

Exemplos:

coffe 5.45

O exemplo mais simples com informações mínimas necessárias para processar a solicitação. Despesa: 5,45 da conta padrão, descrição: "café".

coffee 5.45 tags:drinks,coffee acct:amex

Despesa: 5,45 no café da conta 'Amex', tags anexadas: 'bebidas' e 'café'

Pay check +6952.32 status:pending

Renda: uma verificação de pagamento de 6952.32. O cheque ainda está para limpar

ATM withdrawal 200 from:BoA Checking to:Cash

Transferência: retirou 200 de um caixa eletrônico do Bank of America na carteira

Após cada transação, recebo uma notificação por e-mail do banco. O e-mail de amostra é assim:

from: [email protected]
to: [myemail]@gmail.com
topic: Payment card transaction

Dear Mr. [Surname],

on 05.11.2017 at 10:08 a transaction was performed on your payment card in the amount of 536.80 CZK. Payment detail: KOSIK RETAIL S.R.O.>PRAHA 9 CZ.

For more information, please visit your internet banking.

Equa bank


[...]

Estou procurando uma solução para processar automaticamente e-mails recebidos, ler as informações sobre transações e enviar e-mails para endereços predefinidos da Buxfer.

A saída desejada neste exemplo é:

from: [myemail]@gmail.com
to: [privateemail]@buxfer.com
topic: KOSIK RETAIL S.R.O.>PRAHA 9           CZ 536.80

Meu hardware disponível é:

  • notebook com o Windows 10,
  • RaspberryPi 3B com Ubuntu Mate 16.04 LTS,
  • smartphone com Android 7.1.2 (AOSP Extended 4.6)

Eu tentei fazer isso com regras de filtro no Gmail e no Thunderbird; para encontrar add-on para o Thunderbird, que poderia fazer isso; Pesquisei na Web para encontrar o software apropriado, mas encontrei apenas ferramentas para envio em massa de e-mails, encaminhamento de e-mail ou respostas automáticas.

    
por Sebastian 28.11.2017 / 15:20

3 respostas

2

O IFTTT e serviços baseados na web semelhantes para automação e integração on-line podem ser usados para automatizar esse processo. A Plataforma IFTTT oferece uma ampla gama de serviços disponíveis com possibilidade de personalizar ações em JavaScript ( tecnicamente TypeScript ) em "Filter code", que é executado após o Trigger ("if") e antes de Action ("then"), no entanto, é necessário criar o próprio applet.

Como gatilho, escolhi o serviço do Gmail e selecione Novo e-mail na caixa de entrada em "[email protected]"

Como ação, escolhi o Gmail novamente e selecionei "Enviar um e-mail" para o e-mail da conta do Buxfer e configurei os seguintes campos:

  • Assunto: {{Assunto}}
  • Corpo: {{BodyPlain}}

Após adicionar a ação, foi possível escrever o código Filter, que permitia recuperar a quantidade com a descrição da mensagem de correio e formatá-la da maneira necessária (descrição, espaço, quantidade). Foi necessário remover todos os caracteres especiais porque, no email enviado, eles foram convertidos em símbolos HTML. No entanto, Buxfer analisou os e-mails recebidos como texto sem formatação e tratou ponto-e-vírgula (;) no final de qualquer caractere especial como início de uma nova transação, de acordo com " documentação ":

You can send report multiple expenses in a single message by typing each on a separate line, or separating them with a semi-colon (;)

if (Gmail.newEmailFrom.Subject === "Payment card transaction") {
  var body = Gmail.newEmailFrom.BodyPlain;
  var lines = body.split("\n\n");
  var targetLine = lines[1];
  var words = lines[1].split(" ");
  var amount = words[16];
  var description = targetLine.substring(
    targetLine.lastIndexOf("Payment detail: ") + 16
    );

  description = description.replace(/[^\w\s:]/gi, ' ');
  var targetBody = description + amount;

  Gmail.sendAnEmail.setBody(targetBody);
} else if (Gmail.newEmailFrom.Subject === "Incoming payment to your account") {
  ...
} else if (Gmail.newEmailFrom.Subject === "Outgoing payment from your account") {
  ...
} else {
  Gmail.sendAnEmail.skip()
}

Atualmente, esta solução funciona bem com transações com cartões de pagamento. O rastreamento de pagamentos recebidos exigiria o gerenciamento de várias contas. Os pagamentos de saída precisariam resolver o problema com pagamentos com cartão de contabilidade.

    
por 18.08.2018 / 17:40
0

Eu posso responder em relação ao Unix, aqui Ubuntu.

Você precisa de um MTA local (agente de transferência de e-mail) como "sendmail", configurado da maneira necessária, especialmente no que diz respeito aos protocolos seguros a serem usados e à sua autenticação no site remoto. Então você tem que construir a mensagem para enviar usando um editor de texto simples ou qualquer ferramenta que possa produzir texto simples. Uma vez que sua mensagem é criada, você pode simplesmente fornecê-la ao "sendmail", que a enviará ao destinatário. Se configurado apropriadamente, o "sendmail" pode fazer toda a autenticação.

Para processar as mensagens recebidas, você pode instalar e configurar o "fetchmail", que pode recuperar as mensagens do servidor remoto usando o protocolo apropriado. Considerando que você provavelmente receberá inúmeras mensagens, não apenas relacionadas a este sistema de pagamento, você terá que filtrar as mensagens recebidas. "procmail" é provavelmente uma boa ferramenta para ajudá-lo nessa tarefa.

Confesso que a configuração dessas ferramentas não está no nível iniciante.

    
por 28.11.2017 / 15:50
-1

Você precisa de um servidor POP / IMAP no seu servidor de e-mail para receber e-mails em sua máquina local. Em uma máquina Linux, eu recomendo o Dovecot. Para automatizar a operação, o fetchmail fará o resto.

    
por 15.01.2018 / 12:19