2 votos

Creación de wrapper script para que Mail.app envíe correo desde Terminal

Estoy tratando de enviar correo desde la terminal con la ayuda de bash y applescript. Uso bash para ocuparse de los argumentos y del cuerpo del mensaje de correo. 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

2voto

sonja Puntos 41

¿Necesitas utilizar Mail.app, o tu objetivo es sólo enviar un mensaje de correo electrónico? Si es sólo para enviar un mensaje de correo electrónico desde el Terminal, puede utilizar el comando enviarcorreo electrónico utilidad de línea de comandos.

/usr/local/bin/sendemail 
 -f from@my.email.com 
 -t my.recipient@their.email.com 
 -s your.smtp.server:port 
 -xu smtp.username.here 
 -xp smtp.password.here 
 -m message.body.goes.here

Obviamente, en Terminal todo esto tendrá que ir en una sola línea, con los escapes apropiados y las comillas de cadena. Puede consultar la página man de sendemail para más opciones.

2voto

Jason Puntos 8799

También puede consultar Puesto de superusuario . En respuesta aceptada proporciona un bash script que utiliza AppleScript para enviar un correo electrónico con un archivo adjunto desde una línea de comandos de Terminal. Este script puede ser más funcional de lo que necesita, pero es un gran 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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X