Expandir el envío de correo electrónico con Applescript

0

Leí con interés el artículo sobre el envío de un correo electrónico basado en el análisis a través de un archivo CSV para recoger el nombre y la dirección de correo electrónico. Esto parece ser la mayor parte de lo que necesito para lograr mi objetivo, con la excepción de que me gustaría que el script se ejecute una vez al día y que envíe el correo electrónico un día antes de la fecha almacenada en el archivo csv. Esto es para recordarle a alguien que debe realizar una determinada tarea al día siguiente. Los correos electrónicos se enviarán usando Apple Mail como MTA a través de mi cuenta de gmail.

El csv contendrá lo siguiente:

nombre, apellido, fecha de acción

La secuencia de comandos tendría que recoger el nombre y la fecha del archivo csv. He codificado el texto del correo electrónico en el script como se muestra en el ejemplo anterior.

Pseudocódigo

  1. El script se ejecuta justo después de la medianoche todos los días analizando el csv para determinar quién debe recibir el correo electrónico en qué fecha.
  2. Para los nombres seleccionados, cree y envíe un correo electrónico el día anterior a la acción requerida.
  3. Como beneficio adicional, el script podría reenviar el recordatorio en la fecha de vencimiento, así como cualquier nuevo recordatorio para el día siguiente.

Supongo que podría restar manualmente un día en mi csv para facilitar la codificación.

Acabo de comenzar con Applescript y no sé cómo modificar el script existente para lograr este objetivo.

Rod Cole
fuente
¿Entiendes que este enfoque es bastante frágil? Si tu Mac está apagada (tal vez dormida, sin wifi, sin internet) no hace nada. En general (según el caso) desea algo más seguro, como ejecutar en un servidor dedicado.
Roger

Respuestas:

1

Intenta algo como esto:

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

Puede ejecutar el script todos los días después de la medianoche (si la computadora está despierta) ejecutando EDITOR=nano crontab -e y añadiendo una línea como 1 0 * * * osascript ~/Scripts/some\ script.scpt.

Los formatos de fecha reconocidos dependen de la configuración seleccionada en Preferencias del sistema. No sé cómo obtener una dirección de correo electrónico para un nombre y apellido.

Lri
fuente
Gracias por la rápida respuesta. Soy consciente del problema potencial del sueño. Dicho esto, mi Mac Pro nunca duerme, solo mi pantalla, así que no debería ser un problema. Estoy familiarizado con cron de Linux / Unix. Creo que este código, cuando está integrado con lo que ya tengo, debería hacer el truco, ya que el otro código analiza el csv para el nombre y un saludo personalizado. A lo sumo, solo necesito enviar un máximo de 6 correos electrónicos por día para que el consumo de recursos sea ligero.
Rod Cole