Не так давно я вам рассказывал про отправку писем с помощью PowerShell. Обычное дело.
Но представим себе пользователя который не искушен в PS-скриптах. Для приема и отправки электронной почты он пользуется обыкновенной MS Outlook.
Если вам требуется, что бы электронное письмо отправилось адресату в назначенный день и час, то в программе Microsoft Outlook имеется возможность запрограммировать время и дату отправки вашей корреспонденции. Так называемый отложенный старт. Но для этого в назначенное время и дату ваш ПК должен быть включен, запущена программа Microsoft Outlook и иметь доступ в Интернет.
Но это письмо будет отправлено единожды!
А если вам надо его отправить повторно, но в другое время? Для этого придется писать скрипт VBA. Ибо MS Outlook хоть и хороший клиент, но не настолько. Не пугайтесь, вы не первый. Вот здесь другой автор предложил скрипт(макрос) который в заданный интервал времени (раз в сутки, в среду вечером, раз в неделю или в иное указанное время) отправляет письма из указанной папки Outlook. При этом данные письма не удаляются, а служат своего рода шаблоном. То есть один раз создали письмо-шаблон и в заданное время без вашего участия будет происходить его отправка. Вот сам макрос:
Private Sub Application_Reminder(ByVal Item As Object)
Dim OutFolder As Folder, NewItem As MailItem
If Item.Subject = "Letters Delivery" Then
Item.MarkComplete
'Set OutFolder = GetNamespace("MAPI").Folders("Иванов Иван Иванович").Folders("Расписание")
Set OutFolder = GetNamespace("MAPI").Folders(CStr(Session.CurrentUser)).Folders("Delivery")
'перебираем письма в указанной папке
For i = 1 To OutFolder.Items.Count
'Debug.Print OutFolder.Items(i).Subject 'тема письма
Set NewItem = OutFolder.Items(i).Copy 'создаем копию письма
Call NewItem.Send 'отправляем письмо
Next i
End If
End Sub
Dim OutFolder As Folder, NewItem As MailItem
If Item.Subject = "Letters Delivery" Then
Item.MarkComplete
'Set OutFolder = GetNamespace("MAPI").Folders("Иванов Иван Иванович").Folders("Расписание")
Set OutFolder = GetNamespace("MAPI").Folders(CStr(Session.CurrentUser)).Folders("Delivery")
'перебираем письма в указанной папке
For i = 1 To OutFolder.Items.Count
'Debug.Print OutFolder.Items(i).Subject 'тема письма
Set NewItem = OutFolder.Items(i).Copy 'создаем копию письма
Call NewItem.Send 'отправляем письмо
Next i
End If
End Sub
Т.е. всё, что вам необходимо: один раз создать шаблон, один раз настроить задачу в Outlook и теперь каждый вторник(*) в заданное вами время будет происходить отправка нужного вам письма.
Но опять же в назначенное время ваш ПК должен быть включен и запущена программа Microsoft Outlook. С другой стороны в таком виде Microsoft Outlook можно поставить и на сервер. Хотя я бы предпочел The Bat!
Успехов.
1 comment:
Какой то изврат!
Post a Comment
А что вы думаете по этому поводу?