2 votes

Création d'un wrapper script pour Mail.app afin d'envoyer du courrier depuis le Terminal

J'essaie d'envoyer du courrier à partir du terminal avec l'aide de bash et applescript. J'utilise bash pour s'occuper des arguments et du corps du message électronique. J'ai ensuite essayé d'utiliser Applescript pour envoyer le courrier avec Mail.app. J'ai rencontré quelques problèmes cependant, lorsque j'essaie ce qui suit, j'obtiens : 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}

Version mise à jour :

#!/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

Ash Points 957

Avez-vous besoin d'utiliser Mail.app, ou votre objectif est-il simplement d'envoyer un message électronique ? S'il s'agit simplement d'envoyer un message électronique à partir du Terminal, vous pouvez utiliser la fonction sendemail l'utilitaire de ligne de commande.

/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

Évidemment, dans le Terminal, tout cela devra tenir sur une seule ligne, avec les échappatoires et les guillemets appropriés. Vous pouvez consulter la page de manuel de sendemail pour plus d'options.

2voto

Jason Points 8799

Vous pouvez également consulter cette Poste de SuperUser . Le site réponse acceptée fournit un script bash qui utilise AppleScript pour envoyer un email avec une pièce jointe depuis une ligne de commande Terminal. Ce script est peut-être plus fonctionnel que ce dont vous avez besoin, mais c'est un excellent point de départ. Le code de la réponse :

#!/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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X