Creando un script contenedor para que Mail.app envíe correo desde la Terminal

2

Estoy intentando enviar correo desde el terminal con la ayuda de bash y applescript. Uso bash para ocuparme de los argumentos y el cuerpo del mensaje de correo electrónico. Luego he intentado usar Applescript para enviar el correo con Mail.app. Sin embargo, me he encontrado con algunos problemas, cuando intento lo siguiente obtengo: 4:4: syntax error: Expected expression but found end of script. (-2741)

#!/bin/bash

if [ $# -ne 2 ]
then
    echo "Arguments: <subject> <recipient>" >&2 #stderr
    exit 1
fi

read message

applescript="
tell application \"Mail\"
    set theMessage to make new outgoing message with properties {visible:true, subject:${1}, content:${message}, address:${2}}
    send theMessage
end tell
"

# send the message
osascript -e ${applescript}

Versión actualizada:

#!/bin/bash

if [ $# -ne 2 ]
then
    echo "Arguments: <subject> <recipient>" >&2 #stderr
    exit 1
fi

read message

echo "tell application \"Mail\"
    set theEmail to make new outgoing message with properties {visible:true, subject:\"${1}\", content:\"${message}\"}
    tell theEmail
        make new recipient at end of to recipients with properties {address:\"${2}\"}
        send theEmail
    end tell
end tell" | osascript
    
pregunta foo 29.02.2012 - 22:30

2 respuestas

2

También es posible que desee consultar este SuperUser publicar . La respuesta aceptada proporciona una secuencia de comandos bash que utiliza AppleScript para enviar un correo electrónico con un archivo adjunto desde una línea de comando de Terminal. Este script puede ser más funcional de lo que necesita, pero es un excelente punto de partida. El código de la respuesta:

#!/bin/bash
echo "tell application \"Mail\"
    activate

    set MyEmail to make new outgoing message with properties {visible:true, subject:\"$2\", content:\"Some Message Here\"}
    tell MyEmail
        make new to recipient at end of to recipients with properties {address:\"$1\"}
        make new attachment with properties {file name:((\"$3\" as POSIX file) as alias)}
    end tell
end tell
" | osascript
    
respondido por el JW8 29.02.2012 - 23:46
2

¿Necesita usar Mail.app o su objetivo es simplemente enviar un mensaje de correo electrónico? Si solo es para enviar un mensaje de correo electrónico desde la Terminal, puede usar la utilidad de línea de comandos sendemail . / p>

/usr/local/bin/sendemail 
 -f [email protected] 
 -t [email protected] 
 -s your.smtp.server:port 
 -xu smtp.username.here 
 -xp smtp.password.here 
 -m message.body.goes.here

Obviamente, en la Terminal, todo eso tendrá que ir en una sola línea, con los escapes adecuados y el citado de cadenas. Puede consultar la página del manual de sendemail para obtener más opciones.

    
respondido por el Ash 29.02.2012 - 23:08

Lea otras preguntas en las etiquetas