Задача проста и ясна. Почту нужно отправить и принять. Допустим у нас 2 удаленные системы выходят в интернет раз в сутки и им нужно обмениваться данными. Ну или представим, что мы спамеры =)
Мне эта задача пришла совсем странно, захотелось сделать так, чтобы все входящие письма при появлении печатались на термоленте (термопринтер TSC). Для начала экспериментов я решил написать скрипт, который эту самую почту отсылает:
Const cdoBasic = 1
Set objMessage = CreateObject("CDO.Message")
'Текст письма
objMessage.Subject = "Привед!" ' Тема письма
objMessage.From = """Некто"" <blablabla@gmail.com>" ' От кого письмо
objMessage.To = "*ha*i*o*v_*v@p*e.ru" ' Кому письмо
objMessage.TextBody = "Проверочное сообщение отправлено автоматически" & vbCRLF & "Пробуем печатать"
' Собственно все письмо. Разумеется в текст письма можно запилить и действительно нужную информацию и даже прицепить файл, например objMessage.AddAttachment(«file://C:\blabla.txt»)
'Подключаемся к SMTP серверу gmail. Для яндекса и мэйлру не получилось отправить почему то, поэтому gmail
With objMessage.Configuration.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
'Тип аутентификации Basic (Base64 encoded), NTLM
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic
'Пользователь SMTP сервера. Нам понадобится имя юзера gmail без @gmail.com
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "ma****er"
'Пароль от SMTP сервера в явном виде
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "gfhjkm"
'Порт сервера (25 вроде)
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
'Использование SSL шифрования
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
'Время простоя до разъединения. В секундах.
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
.Update
End With
'Как бы всё
On Error Resume Next
objMessage.Send
If Err <> 0 Then
Msgbox "Не ушло: " & Err.Description
Else
Msgbox "Ушло!"
End if
Const olFolderInbox = 6
Set objOutlook = CreateObject("Outlook.Application") ' Цепляемся к оутлуку
Set objNamespace = objOutlook.GetNamespace("MAPI")
Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox) ' Папка "Входящие"
Set colItems = objFolder.Items
Set colFilteredItems = colItems.Restrict("[UnRead] = True") ' Нас интересуют только не прочитанные сообщения
For Each objMessage In colFilteredItems
strName = strName+ objMessage.SenderName +" "+ objMessage.SenderEmailAddress+vbCr+objMessage.Subject+vbCr
colFilteredItems.UnRead="False" ' Помечаем как прочитанные
Next
strText = strName
Set objFSO = CreateObject("Scripting.FileSystemObject")
strFileName = "temporary_print_file.txt" ' Имя текстового файла, куда складываем все письма
Set objFile = objFSO.CreateTextFile(strFileName)
objFile.Write strText
objFile.Close
Новые комментарии