Отправка сообщений на почту - VBA

Узнай цену своей работы

Формулировка задачи:

Добрый день. Подскажите пожалуйста а как можно отправить сообщение на почту макросом из икселя при определенном условии. Нашел в интернете такой вот код но довести его до работоспособности не могу(
Листинг программы
  1. Sub CDO_Mail_Small_Text_2()
  2. Dim iMsg As Object
  3. Dim iConf As Object
  4. Dim strbody As String
  5. Dim Flds As Variant
  6. Set iMsg = CreateObject("CDO.Message")
  7. Set iConf = CreateObject("CDO.Configuration")
  8. iConf.Load -1
  9. Set Flds = iConf.Fields
  10. With Flds
  11. .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
  12. .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
  13. .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "Полный адрес вашего GMail ящика"
  14. .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "GMail пароль"
  15. .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
  16. .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
  17. .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
  18. .Update
  19. End With
  20. strbody = "Поздравляем!!!! Ваше письмо успешно отправлено !!!!"
  21. With iMsg
  22. Set .Configuration = iConf
  23. .To = "Почтовый адрес получателя"
  24. .CC = ""
  25. .BCC = ""
  26. .From = """ВашеИмя"" <removed@mail.ru>"
  27. .Subject = "Попытка отправить письмо с помощью CDO"
  28. .TextBody = strbody
  29. .Send
  30. End With
  31. End Sub

Решение задачи: «Отправка сообщений на почту»

textual
Листинг программы
  1. Sub Primer()    ' Пример использования функции Send_Mail
  2.   txt = "Это письмо сформировано макросом" & vbNewLine & _
  3.           "без использования внешних программ и подключения дополнительных библиотек"
  4.     If Send_Mail("mail1@mail.ru", "mail1@mail.ru", "mail3@mail.ru", "mail@mail.ru", "проверка отправки почты", txt) Then
  5.         MsgBox "Письмо успешно отправлено", vbInformation
  6.     Else
  7.         MsgBox "Не удалось отправить письмо", vbExclamation
  8.     End If
  9. End Sub
  10. Private Sub SaveAccountData()    ' запускать один раз - для записи в реестр Windows параметров почтового аккаунта
  11.   SaveSetting Application.Name, "mail", "smtpserver", "smtp.mail.ru"    ' Ваш SMTPServer
  12.   SaveSetting Application.Name, "mail", "sendusername", "mail@mail.ru"    ' Ваша учетная запись
  13.   SaveSetting Application.Name, "mail", "sendpassword", "12345"    ' Ваш  пароль
  14. End Sub
  15. Function Send_Mail(ByVal MailTo As String, ByVal MailCopy As String, ByVal MailCCopy As String, ByVal MailFrom As String, _
  16.                    ByVal MailSubject As String, ByVal MailText As String, _
  17.                    Optional ByVal MailAttachment As String = "") As Boolean
  18.     ' функция для отправки почты без использования внешних почтовых программ
  19.   ' ----------------------------------------------------------------------
  20.   ' в качестве параметров получает:
  21.   ' MailTo - адрес получателя письма
  22.   ' MailFrom - адрес отправителя письма
  23.   ' MailSubject - тема письма
  24.   ' MailText - текст письма
  25.   ' MailAttachment - полный путь к файлу вложения (необязательный параметр)
  26.   ' ----------------------------------------------------------------------
  27.   ' возвращает TRUE, если отправка почты произошла успешно, и FALSE в обратном случае
  28.  
  29.     Const cdoConfigURL = "http://schemas.microsoft.com/cdo/configuration/"
  30.     On Error Resume Next: Err.Clear
  31.  
  32.     SMTPserver = GetSetting(Application.Name, "mail", "smtpserver", "")
  33.     sendusername = GetSetting(Application.Name, "mail", "sendusername", "")
  34.     sendpassword = GetSetting(Application.Name, "mail", "sendpassword", "")
  35.     If Len(SMTPserver) = 0 Or Len(sendusername) = 0 Or Len(sendpassword) = 0 Then Exit Function
  36.  
  37.     Set cdoConfig = CreateObject("CDO.Configuration")
  38.     With cdoConfig.Fields
  39.         .Item(cdoConfigURL & "sendusing") = 2
  40.         .Item(cdoConfigURL & "smtpauthenticate") = 1
  41.         .Item(cdoConfigURL & "smtpserver") = SMTPserver
  42.         .Item(cdoConfigURL & "sendusername") = sendusername
  43.         .Item(cdoConfigURL & "sendpassword") = sendpassword
  44.         .Item(cdoConfigURL & "smtpserverport") = 465 'порт для SSL: 465
  45.        .Item(cdoConfigURL & "smtpusessl") = 1  'использовать аутентификацию: да
  46.        .Update
  47.     End With
  48.  
  49.  
  50.  
  51.  
  52.     Set cdoMessage = CreateObject("CDO.Message")
  53.     With cdoMessage
  54.         Set .Configuration = cdoConfig
  55.         .BodyPart.Charset = "koi8-r"
  56.         .From = MailFrom:
  57.         .cc = MailCopy
  58.         .bcc = MailCCopy
  59.         .To = MailTo
  60.         .Subject = MailSubject
  61.         .TextBody = MailText
  62.         If Len(MailAttachment) > 0 Then .AddAttachment MailAttachment
  63.         .send
  64.     End With
  65.     Set cdoMessage = Nothing: Set cdoConfig = Nothing
  66.  
  67.     '    If Err.Number = -2147220973 Then MsgBox ("Отсутствует связь с интернетом")
  68.   '    If Err.Number = -2147220975 Then MsgBox ("SMTP сервер ответил отказом")
  69.   '    If Err.Number = 0 Then MsgBox ("Письмо отправлено")
  70.   Send_Mail = Err = 0
  71. End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут