2013-07-07 6 views
0

Пожалуйста, можете проверить этот скрипт? Я не могу заставить его работать - я хотел бы использовать это, чтобы отправлять одно и то же электронное письмо на разные адреса, но с персонализированным приветствием.Applescript для массовой почты

- Скрипт требует наличия двух файлов в той же папке, что и скрипт. - «Email Addresses.txt» должен содержать адреса электронной почты, разделенные возвратом каретки. - «Email Message.txt» должен содержать тему в первой строке, а затем тело сообщения ниже (разделено возвратом каретки).

- Получить путь к скрипту, где должны храниться файлы поддержки.

set myPath to (path to me) as text 
set oldDelims to AppleScript's text item delimiters 
set AppleScript's text item delimiters to ":" 
set textChunks to text items of myPath 
if last item of textChunks is "" then set textChunks to _chopLast(tectChunks) 
set myFolderPath to _chopLast(textChunks) as text 
set AppleScript's text item delimiters to oldDelims 
log myPath 
log myFolderPath 

tell application "Finder" 
    -- Get the list of recipients 
    set recFile to (myFolderPath & ":Email Addresses.txt") 
    set recList to "" 
    set recFileID to (open for access (recFile as alias)) 
    -- Extract text from the file 
    try 
     set fileLength to (get eof recFileID) 
     set recList to (read file recFile from 1 to (fileLength)) 
    on error error_message number error_number 
     display alert "Error number: " & (error_number as string) & return ¬ 
      & ("Message: ") & error_message 
     close access recFileID 
    end try 
    log recList 
    -- Get the email subject and body 
    set msgFile to (myFolderPath & ":Email Message.txt") 
    set msgFileID to (open for access (msgFile as alias)) 
    -- Extract text from the file 
    try 
     set fileLength to (get eof msgFileID) 
     set emailBody to (read file msgFile from 1 to (fileLength)) 
    on error error_message number error_number 
     display alert "Error number: " & (error_number as string) & return ¬ 
      & ("Message: ") & error_message 
     close access msgFileID 
    end try 
    log emailBody 
    -- Seperate Subject from Body 
    set emailSubject to the first paragraph of emailBody 
    log emailSubject 
    set emailMsg to paragraphs 2 thru (count of paragraphs in emailBody) of emailBody 
    log emailMsg 
    set recListList to paragraphs in recList 
    -- Loop for each address. 
    repeat with eachAddress in (recListList) 
     set txtURL to ("mailto:" & eachAddress & "?subject=" & emailSubject & "&body=" & emailMsg as string) 
     open location txtURL 
     tell application "Mail" 
      activate 
      -- Uncomment the following line if you want to automatically send messages 
      -- send newMessage 
     end tell 
    end repeat 
end tell 

on _chopLast(theList) 
    return reverse of (rest of (reverse of theList)) 
end _chopLast 
+0

«Я не могу заставить его работать» недостаточно информации. Что не работает? Вы видите ошибку? Какая ошибка? Или, возможно, отправляются электронные письма, но они пустые? Или, возможно, все электронные письма отправляются по тому же адресу? Или что-то другое? – Mark

+0

спасибо, Марк, ты прав. Извините за недостаток информации. Это дало мне ошибку, но я отказываюсь от этого сценария и буду работать с Лаури ниже. Я хочу отправить массовое электронное письмо, как показано ниже, но все еще осталось три вещи. 1) Мне нужно персонализированное приветствие, т.е. Привет (Это можно извлечь из электронной таблицы с адресами электронной почты). 2. Нужно, чтобы адреса также были вытащены из листа. 3.) Текст тела имеет один URL-адрес в них и некоторые различия шрифтов, поэтому он должен быть RTF или HTML. – coachpienaar

+0

Собственно, это именно то, что я делаю в одной из моих собственных рассылок. Я использую файлы CSV. Ядро сценария похоже на Lauri's. – Mark

ответ

1
set addresses to "[email protected] 
[email protected]" 
set title to "title" 
set body to "body" 
--set body to read "/Users/username/Documents/body.txt" as «class utf8» 

repeat with a in paragraphs of addresses 
    tell application "Mail" 
     activate 
     tell (make new outgoing message) 
      set visible to true 
      make new recipient at end of to recipients with properties {address:a} 
      set subject to title 
      set content to body 
      --send 
     end tell 
    end tell 
end repeat 
+1

Есть ли конкретная причина, чтобы установить видимость в true? Если вы установите значение false, вы не будете нарушены во время работы на одном компьютере. – Mark

+0

@Mark Нет, я просто включил его для тестирования. – user495470

+0

OK, спасибо за разъяснение. – Mark

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