Creazione dello script wrapper per Mail.app per inviare posta da Terminal

2

Sto provando a inviare posta dal terminale con l'aiuto di bash e di applescript. Uso bash per occuparmi degli argomenti e del corpo del messaggio di posta elettronica. Quindi ho provato ad usare Applescript per inviare la posta con Mail.app. Ho incontrato alcuni problemi però, quando provo quanto segue, ottengo: 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}

Versione aggiornata:

#!/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
    
posta foo 29.02.2012 - 22:30
fonte

2 risposte

2

Potresti anche voler controllare questo SuperUser postare . La risposta accettata fornisce uno script bash che utilizza AppleScript per inviare un'e-mail con un allegato da una riga di comando del terminale. Questo script può avere più funzionalità del necessario, ma è un ottimo punto di partenza. Il codice dalla risposta:

#!/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
    
risposta data 29.02.2012 - 23:46
fonte
2

Hai bisogno di usare Mail.app, o il tuo obiettivo è solo quello di inviare un messaggio e-mail? Se è solo per inviare un messaggio e-mail dal terminale, è possibile utilizzare l'utilità della riga di comando sendemail .

/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

Ovviamente nel Terminale tutto ciò richiederà una singola riga, con escape appropriati e quoting delle stringhe. Puoi guardare la pagina man di sendemail per ulteriori opzioni.

    
risposta data 29.02.2012 - 23:08
fonte

Leggi altre domande sui tag