Estoy tratando de enviar correo desde la terminal con la ayuda de bash y applescript. Uso bash para encargarme de los argumentos y el cuerpo del mensaje de correo electrónico. Luego intenté 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
También puede consultar esta publicación de superusuario . La respuesta aceptada proporciona un script 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 tener más funciones de las 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
¿Necesita usar Mail.app o su objetivo es solo enviar un mensaje de correo electrónico? Si es solo para enviar un mensaje de correo electrónico desde la Terminal, puede usar la utilidad de línea de comandos sendemail .
/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 la Terminal, todo eso deberá ir en una sola línea, con los escapes apropiados y las comillas de cadena. Puede consultar la página del manual de sendemail para obtener más opciones.
Foo