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