mail mail

Отправка писем из Excel при помощи почтовой программы TheBAT!

Отправка почты из Excel при помощи TheBAT!

Макроc предназначен для автоматизированной рассылки почты из Excel.

Для рассылки используется почтовая программа TheBAT!

(подразумевается, что эта программа на компьютере установлена и настроена, т.е. без проблем удаётся вручную создать в TheBAT письмо, и отправить его на произвольный адрес)

В качестве исходных данных выступает таблица Excel, в которой в первом столбце указаны адреса получателей рассылки, а в остальных столбцах - данные для формирования писем (тема, текст и т.д.)

В прикреплённом примере макрос формирует тему письма из значения ячейки второго столбца

' формируем тему письма из 2-й ячейки строки
           Тема = "Информация для " & ro.Cells(2) & " от EducatedFool"

а текст писем составляется из значений других ячеек (столбцы с 3 по 9)

Поскольку для программного формирования письма требуется, чтобы текст письма находился в отдельном текстовом файле,
предварительно макрос производит запись текста письма во временный файл

Эти файлы создаются в папке C:\WINDOWS\Temp (используется системная папка для временных файлов),
файлам присваиваются имена типа mail.207561135292053, где 207561135292053 - случайное число:

Отправка письма производится вызовом специальной функции ОтправитьПисьмоЧерезTheBat:

ОтправитьПисьмоЧерезTheBat Адрес, Текст, Тема

Код функции для отправки письма:

Function ОтправитьПисьмоЧерезTheBat(ByVal Email As String, _
                                    ByVal Текст As String, Optional ByVal Тема As String = "", _
                                    Optional ByVal AttachFilename As String = "") As Boolean
    ' функция производит отправку письма с заданной темой и текстом на адрес Email
   ' с почтового ящика, настроенного в TheBAT для отправки писем "по-умолчанию"
   ' Если задан параметр AttachFilename, к отправляемому письму прикрепляется файл

    strTO = "TO=" & Chr(34) & Email & Chr(34)    ' адрес получателя (можно указать список адресов)
   strSUBJECT = "SUBJECT=" & Chr(34) & Replace(Тема, """", "`") & Chr(34)   ' тема сообщения

    Filename$ = Environ("temp") & "\mail." & Fix(Rnd() * 1E+15)
    ff = FreeFile: Open Filename$ For Output As #ff
    Print #ff, Текст: Close #ff    ' пишем текст в файл

    ' текст сообщения (или путь к текстовому файлу с сообщением)
   strTEXT = "TEXT=" & Chr(34) & Filename$ & Chr(34)    ' Chr(34) - это кавычка

    ' путь к прикреплённому файлу (можно прикрепить несколько файлов)
   If AttachFilename <> "" Then strATTACH = "ATTACH=" & Chr(34) & AttachFilename & Chr(34)

    TheBatPath = ПутьКФайлуПрограммыTheBAT: DoEvents
    Cmd$ = Chr(34) & TheBatPath & Chr(34) & " /MAIL;" & strTO & ";" & strSUBJECT & ";" & _
           strTEXT & ";" & strATTACH & " /SENDALL; /MINIMIZE;"    ' формируем командную строку
         
    CreateObject("WScript.Shell").Exec Cmd$    ' выполняем команду
End Function

Ознакомьтесь также со способом отправки почты из Excel
без использования почтовых программ

Ранние версии программы TheBAT! почему-то не отправляли письма сразу же.

Если вы используете древнюю версию этой почтовой программы (я заметил этот эффект на версии 1.54),
то по окончании формирования всех писем запустите такой макрос:

Function Send_Mail_with_TheBAT_from_Excel_VBA()
    ' теперь и без этого всё работает :) видимо, раньше у меня была глючная версия TheBAT
   For i = 1 To 30000: DoEvents: Next    ' пауза - без неё почему-то не происходит отправки
   Cmd2 = TheBatPath & " /SENDALL;": wsh.Exec Cmd2    ' команда ОТПРАВИТЬ ВСЮ ПОЧТУ
End Function

 

Если вы хотите узнать, с какого из настроенных почтовых ящиков TheBAT! будет отправлять почту,
есть возможность загрузить эти данные из настроек программы в реестре Windows:

Function DefaultMailAccount() As String
    ' читает из реестра настройки почтового ящика,
   ' установленного в TheBAT! как "ящик по-умолчанию"
   ' возвращает адрес почты, или пустую строку, если TheBAT! не настроен
   On Error Resume Next: Err.Clear
    key$ = "HKEY_CURRENT_USER\Software\RIT\The Bat!\Users depot\Default"
    DefaultMailAccount = CreateObject("WScript.Shell").RegRead(key$)
End Function

Sub УзнатьАдресПочты()
    MsgBox DefaultMailAccount, vbInformation
End Sub

ВложениеРазмер
TheBAT.xls40.5 КБ

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

При создание письма The Bat закрывается автоматически

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
2 + 18 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.