2014-08-08 4 views
0

Я новичок в Applescript и работаю над приложением, которое работает в фоновом режиме, и я хочу, чтобы он отправлял обновления по электронной почте так часто БЕЗ mail.app.Использовать Applescript для отправки почты без mail.app

Я пробовал много раз в этом случае, но в то время как this является ближайшим, я нашел, я не знаю, как использовать скрипт Python. Это приложение должно работать независимо от того, какой Mac OSX он установлен, включая компьютеры без Python. Это возможно?

ответ

0

Я часто хотел сделать то же самое и боролся сам. Я в конечном итоге приземлился на опцию python. Python поддерживается обратно в OS X 10.5 и поставляется предустановленно во многих новых версиях OS X. Есть ли причина, по которой вы не чувствуете, что можете ее использовать? Поддерживаете ли вы OS 10.4.x или более старые машины?

Если опция python по-прежнему является возможной опцией, я приведу пример использования здесь.

property PyMail : "/Users/TBD/Documents/Sample_Python_Email/PyMail.py"      -- PATH TO PYTHON MAIL SCRIPT 

on run 
    set emailTo to "[email protected]" -- MULTIPLE ADDRESS SHOULD BE A COMMA  DELIMITED STRING LIKE THIS -- "[email protected], [email protected]" 
    set emailFrom to "Your Name <[email protected]>" 
    set subject to "Demo Email" 
    set message to "Hi user, 
      I hope things are going well" 
    set pathToAttchment to "/Users/TBD/Desktop/prof.jpg" -- POSIX PATH TO FILE, LEAVE AS EMPTY STRING FOR NO ATTACHMENT 
    set username to "smtpusername" -- MAY OR MAY NOT BE REQUIRED IN YOUR CASE 

    sendPyMail(emailTo, emailFrom, subject, message, pathToAttchment, username) 

end run 



on sendPyMail(emailTo, emailFrom, subject, message, attachment, username) 
    try 
     do shell script "python " & quoted form of PyMail & " " & quoted form of emailTo & " " & quoted form of emailFrom & " " & quoted form of subject & " " & quoted form of message & " " & quoted form of attachment & " " & quoted form of username 
     return true 
    on error 
     return false 
    end try 
end sendPyMail 

Вот питон скрипт (просто скопировать и мимо него в текстовый редактор и сохранить как PyMail.py. Вам нужно изменить SMTP-сервер и, возможно, добавить пароль, который идет с вами имя пользователя» повторно поставки ...

import sys 

SMTP_TO = sys.argv[1] 
SMTP_TO = SMTP_TO.split(',') 
SMTP_FROM = sys.argv[2] 
SUBJECT = sys.argv[3] 

MESSAGE = sys.argv[4] 

TEXT_FILENAME = sys.argv[5] 

SMTP_USERNAME = sys.argv[6] 



SMTP_SERVER = 'smtp.domainx.com' 
SMTP_PORT = 25 

SMTP_PASSWORD = '' 


# now construct the message 
import smtplib, email 
from email import encoders 
import os 

msg = email.MIMEMultipart.MIMEMultipart() 
body = email.MIMEText.MIMEText(MESSAGE) 

if TEXT_FILENAME != "": 
attachment = email.MIMEBase.MIMEBase('text', 'plain') 
attachment.set_payload(open(TEXT_FILENAME).read()) 
attachment.add_header('Content-Disposition', 'attachment', filename=os.path.basename(TEXT_FILENAME)) 
encoders.encode_base64(attachment) 

msg.attach(body) 

if TEXT_FILENAME != "": 
    msg.attach(attachment) 

msg.add_header('From', SMTP_FROM) 
msg.add_header('To', ';'.join(SMTP_TO)) 
msg.add_header('Subject', SUBJECT) 

mailer = smtplib.SMTP(SMTP_SERVER, SMTP_PORT) 
mailer.sendmail(SMTP_FROM, SMTP_TO, msg.as_string()) 
mailer.close() 
+0

Хорошо, поэтому я пробовал это, но при запуске скрипта я получаю «ложь». Есть ли способ увидеть, где происходит ошибка? Я изменил smtp-сервер (на smtp.gmail.com), указав пароль для адреса электронной почты и изменив соответствующие части первой половины скрипта. Что мне не хватает? И большое спасибо за помощь! @ThrowBackDewd – Vira

1

Выполнить это в терминале

echo "this is the body" | mail -s "this is the subject" "[email protected]" 

Примечание: Это предполагает, что вы локально установленный МТА

Вашего AppleScript будет:

do shell script "echo 'this is the body' | mail -s 'this is the subject' '[email protected]'" 
0

не зная ничего о питоне, я использовал TextWrangler и вырезать и вставить два сценария выше. Второй сбой в строке 1, возвращая ошибку синтаксиса следующим образом:

линия 1 свойство PyMail: "/Users/.../PyMail.py" - ПУТЬ К PYTHON MAIL SCRIPT ^ SyntaxError : недействительный синтаксис

Указатель с морковкой находится под «l» в «PyMail». Я прокомментировал строку 1, и он вернул то же сообщение для строки 3.

+0

Это вопрос или ответ? –

+0

Это вопрос. –

Смежные вопросы