Надсилання електронних листів за допомогою програми Apple Mail за допомогою AppleScript.


-1

Я взагалі не знаю AppleScript, тому заздалегідь дякую за будь-яку допомогу, запропоновану з цього питання. На моєму ноутбуці Macbook Pro встановлена ​​остання версія OSX. У мене є файл csv, який виглядає так: FirstName, Email Кен, бла @ blah.com Майк, blahblah @ blahblah.com

Це мій список клієнтів, і я хочу надіслати їм електронний лист. На жаль, я не маю цього списку на автовідповідачі, тому мені потрібно надсилати листи один за одним.

Я хочу написати AppleScript, який обробляє мій .csv-файл по одному запису за раз і надсилає повідомлення. Повідомлення буде таким:

Тема: Як це відбувається?

Привіт, Кен

Пройшло багато часу, як я продав вам дефектний віджет з Китаю. Якщо вам потрібна дефектна електроніка, я тут для вас. Просто дай мені дзвінка на xxx-xxx-xxxx.

З повагою

Кен

AppleScript буде читати ім'я та адресу електронної пошти з файлу один запис за один раз і відправити це повідомлення, заповнивши ім'я та адресу електронної пошти, використовуючи стандартну поштову програму яблука.

Після надсилання повідомлення я хочу, щоб сценарій чекав 60 секунд. Потім надішліть інший електронний лист.

Це має відбутися до досягнення кінця файлу.

Моє перше питання ... Чи можливо це? Якщо можливо, як це зробити?

Чи є кращий спосіб зробити те, що я намагаюся зробити?

Дякую

Відповіді:


3

Тут AppleScript робить те, що ви хочете:

property secsBetweenMails : 60 -- seconds
property csvHasHeaders : true
property mailSubject : "How’s it going?"
property mailBody : "Hi %NAME%

It’s been a while since I sold you that defective widget from China.
If you need more defective elctronics I’m here for you.
Just give me a call at xxx-xxx-xxxx.

Sincerely

Ken"

set csvData to "FirstName,Email
Ken,blah@blah.com
Mike,blahblah@blahblah.com"

--> or:
-- set csvData to read file "path:to:file.csv"

set countSent to 0

-- Parse .csv files with Applescript
-- Adapted from : http://macscripter.net/viewtopic.php?id=19676
set csvEntries to paragraphs of csvData
if csvHasHeaders then
    set startAt to 2
else
    set startAt to 1
end if
repeat with i from startAt to count csvEntries
    set {theName, theEmail} to parseCsvEntry(csvEntries's item i)
    set theBody to replaceName(mailBody, theName)
    tell application "Mail"
        set theNewMessage to make new outgoing message with properties {subject:mailSubject, content:theBody, visible:true}
        tell theNewMessage
            make new to recipient at end of to recipients with properties {address:theEmail}
            send
            set countSent to countSent + 1
        end tell
    end tell
    delay secBetweenMails
end repeat
display dialog (countSent & " mails sent.")

to parseCsvEntry(csvEntry)
    set AppleScript's text item delimiters to ","
    set {theName, theEmail} to csvEntry's text items
    set AppleScript's text item delimiters to {""}
    return {theName, theEmail}
end parseCsvEntry

to replaceName(aBody, aName)
    set AppleScript's text item delimiters to "%NAME%"
    set parts to aBody's text items
    set newBody to item 1 of parts & aName & item 2 of parts
    set AppleScript's text item delimiters to ""
    return newBody
end replaceName
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.