Страницы: 1
RSS
Отправка почты с помощью CDO
 
Уважаемые форумчане.  
Для автоматизации отправки писем из Excel использовал CDO.  
 
Включил ссылку Microsoft CDO for Windows 2000 Library  
Полагаю, что в ее составе есть библиотека  
Microsoft CDO for Exchange 2000 Library(?)  
За основу взял такой код:  
 
Sub mail()  
Dim oMyMail As New CDO.Message  
oMyMail.To = "Administrator@nwtraders.msft"  
oMyMail.From = "Administrator@nwtraders.msft"  
oMyMail.Subject = "Hello from CDO"  
oMyMail.TextBody = "Our letter"  
oMyMail.AddAttachment "C:\1.txt"  
oMyMail.Configuration.Fields.Item _  
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2  
omyMail.Configuration.Fields.Item _  
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _  
"smtp.YourServer.com"  
oMyMail.Configuration.Fields.Item _  
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1  
oMyMail.Configuration.Fields.Item _  
("http://schemas.microsoft.com/cdo/configuration/sendusername") = _  
"YourLogin@YourDomain.com"  
oMyMail.Configuration.Fields.Item _  
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = _  
"Password"  
oMyMail.Configuration.Fields.Item _  
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25  
oMyMail.Configuration.Fields.Item _  
("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False  
oMyMail.Configuration.Fields.Item _  
("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60  
oMyMail.Configuration.Fields.Update  
oMyMail.Send  
End Sub  
 
При отправке письма по внутренней почте Exchange Server появляется окно с ошибкой «Транспорту не удалось подключиться к серверу».  
Подскажите, пожалуйста.Что означает это предупреждение, и какие могут быть варианты решения?  
Автоматизированная отправка писем с помощью Outlook не подходит в связи с известным ограничением процедуры самого приложения.  
Если есть у кого-нибудь эл. версия книги Сью Мошер Программирование Microsoft Outlook, поделитесь, пожалуйста:) Мой адрес SDeev2009@yandex.ru
 
А теперь зашел:)
 
Такой вариант через yandex.ru работает. А на внутренней почте появляется ошибка "Нет доступа к Интернет". Но там интернет и не нужен.  
Кто знает, как поступить в этом случае?    
 
Sub Send_Mail()  
   Const CDO_Cnf = "http://schemas.microsoft.com/cdo/configuration/"  
   Dim oCDOCnf As Object, oCDOMsg As Object  
   Dim SMTPserver As String, sUsername As String, sPass As String, sMsg As String  
   Dim sTo As String, sFrom As String, sSubject As String, sBody As String, sAttachment As String  
   On Error Resume Next  
   'sFrom - как правило совпадает с sUsername  
   SMTPserver = [B10] ' SMTPServer: для Mail.ru "smtp.mail.ru"; для Яндекса "smtp.yandex.ru"; для Рамблера "mail.rambler.ru"
   sUsername = [B11] ' Учетная запись на сервере
   sPass = [B12] ' Пароль к почтовому аккаунту
 
   If Len(SMTPserver) = 0 Then MsgBox "Не указан SMTP сервер", vbInformation, "www.Excel-VBA.ru": Exit Sub  
   If Len(sUsername) = 0 Then MsgBox "Не указана учетная запись", vbInformation, "www.Excel-VBA.ru": Exit Sub  
   If Len(sPass) = 0 Then MsgBox "Не указан пароль", vbInformation, "www.Excel-VBA.ru": Exit Sub  
 
   sTo = [B2] 'Кому
   sFrom = [B3] 'От кого
   sSubject = [B4] 'Тема письма
   sBody = [B5] 'Текст письма
   'sAttachment = [B6] 'Вложение(полный путь к файлу)
   sAttachment = Cells(6, "B").Value  
   'Проверка наличия файла по указанному пути  
   If Dir(sAttachment, vbDirectory) = "" Then sAttachment = ""  
   'Назначаем конфигурацию CDO  
   Set oCDOCnf = CreateObject("CDO.Configuration")  
   With oCDOCnf.Fields  
       .Item(CDO_Cnf & "sendusing") = 2  
       .Item(CDO_Cnf & "smtpauthenticate") = 1  
       .Item(CDO_Cnf & "smtpserver") = SMTPserver  
       .Item(CDO_Cnf & "sendusername") = sUsername  
       .Item(CDO_Cnf & "sendpassword") = sPass  
       .Update  
   End With  
   'Создаем сообщение  
   Set oCDOMsg = CreateObject("CDO.Message")  
   With oCDOMsg  
       Set .Configuration = oCDOCnf  
       .BodyPart.Charset = "koi8-r"  
       .From = sFrom  
       .To = sTo  
       .Subject = sSubject  
       .TextBody = sBody  
       '.AddAttachment = sAttachment  
       If Len(sAttachment) > 0 Then .AddAttachment sAttachment  
 
       .Send  
   End With  
 
   Select Case Err.Number  
   Case -2147220973: sMsg = "Нет доступа к Интернет"  
   Case -2147220975: sMsg = "Отказ сервера SMTP"  
   Case 0: sMsg = "Письмо отправлено"  
   End Select  
   MsgBox sMsg, vbInformation, "Проверка доступа в Интернет"  
   Set oCDOMsg = Nothing: Set oCDOCnf = Nothing  
End Sub
 
Скорей всего неправильная настройка CMTP. Почитайте комментарии здесь:  
http://www.excel-vba.ru/chto-umeet-excel/kak-otpravit-pismo-iz-excel/
Я сам - дурнее всякого примера! ...
 
Спасибо.  
Очень хотелось еще книгу Мошер почитать:)
 
Да, это и есть второй вариант, который на вн. почте пока не работает.
Страницы: 1
Читают тему
Наверх