Expanda Enviando Email com Applescript

0

Li com interesse o artigo sobre o envio de um email com base na análise de um arquivo csv para selecionar o nome e o endereço de email. Isso parece com a maior parte do que eu preciso para alcançar meu objetivo, com a exceção de que eu gostaria que o script fosse executado uma vez por dia e envie o email um dia antes de uma data armazenada no arquivo csv. Isso é para lembrar a alguém que eles precisam executar uma determinada tarefa no dia seguinte. Os e-mails serão enviados usando o Apple Mail como o MTA através da minha conta do Gmail.

O csv conterá o seguinte:

nome, sobrenome, data da ação

O script precisaria pegar o primeiro nome e a data do arquivo csv. Eu codifiquei o texto do email no script, como mostrado no exemplo anterior.

Pseudo-código:

  1. O script é executado logo após a meia-noite todos os dias, analisando o csv para determinar quem deve receber o email em que data.
  2. Para os nomes selecionados, crie e envie um email no dia anterior à ação necessária.
  3. Como bônus, o script poderia reenviar o lembrete na data de vencimento, bem como quaisquer novos lembretes para o dia seguinte.

Suponho que eu poderia subtrair manualmente um dia no meu CSV para facilitar a codificação.

Estou apenas começando com o Applescript e não sei como modificar o script existente para atingir esse objetivo.

Rod Cole
fonte
Você entende que essa abordagem é bastante frágil? Se o seu Mac estiver desligado (talvez dormindo, sem wifi, sem internet), isso não fará nada. Em geral (dependendo do caso), você deseja algo mais à prova de falhas, como a execução em um servidor dedicado.
Roger

Respostas:

1

Tente algo como isto:

set csv to "[email protected],7/14
[email protected],7/15"
--set csv to read "/Users/username/Documents/file.csv" as «class utf8»

set text item delimiters to ","
set y to year of (current date)
repeat with l in paragraphs of csv
    set d to (date (text item 2 of l & "/" & y))
    if date string of (current date) is date string of (d - 1 * days) then
        tell application "Mail"
            tell (make new outgoing message)
                set subject to "subject"
                set content to "content"
                make new to recipient at end of to recipients with properties {address:text item 1 of l}
                send
            end tell
        end tell
    end if
end repeat

Você pode executar o script todos os dias após a meia-noite (se o computador estiver ativado) executando EDITOR=nano crontab -ee adicionando uma linha como 1 0 * * * osascript ~/Scripts/some\ script.scpt.

Os formatos de data reconhecidos dependem das configurações selecionadas nas Preferências do Sistema. Não sei como obter um endereço de e-mail para um nome e sobrenome.

Lri
fonte
Obrigado pela resposta rápida. Estou ciente do potencial problema de sono. Dito isto, meu Mac Pro nunca dorme, apenas minha tela, o que não deve ser um problema. Eu estou familiarizado com o cron do Linux / Unix. Acredito que esse código, quando integrado ao que eu já tenho, deve executar o truque, pois o outro código analisa o csv pelo nome e uma saudação personalizada. No máximo, preciso enviar no máximo 6 e-mails por dia para que o consumo de recursos seja leve.
Rod Cole