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

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

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

Добрый день. Подскажите пожалуйста а как можно отправить сообщение на почту макросом из икселя при определенном условии. Нашел в интернете такой вот код но довести его до работоспособности не могу(

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

textual
Листинг программы
Sub Primer()    ' Пример использования функции Send_Mail
   txt = "Это письмо сформировано макросом" & vbNewLine & _
          "без использования внешних программ и подключения дополнительных библиотек"
    If Send_Mail("mail1@mail.ru", "mail1@mail.ru", "mail3@mail.ru", "mail@mail.ru", "проверка отправки почты", txt) Then
        MsgBox "Письмо успешно отправлено", vbInformation
    Else
        MsgBox "Не удалось отправить письмо", vbExclamation
    End If
End Sub
Private Sub SaveAccountData()    ' запускать один раз - для записи в реестр Windows параметров почтового аккаунта
   SaveSetting Application.Name, "mail", "smtpserver", "smtp.mail.ru"    ' Ваш SMTPServer
   SaveSetting Application.Name, "mail", "sendusername", "mail@mail.ru"    ' Ваша учетная запись
   SaveSetting Application.Name, "mail", "sendpassword", "12345"    ' Ваш  пароль
End Sub
Function Send_Mail(ByVal MailTo As String, ByVal MailCopy As String, ByVal MailCCopy As String, ByVal MailFrom As String, _
                   ByVal MailSubject As String, ByVal MailText As String, _
                   Optional ByVal MailAttachment As String = "") As Boolean
    ' функция для отправки почты без использования внешних почтовых программ
   ' ----------------------------------------------------------------------
   ' в качестве параметров получает:
   ' MailTo - адрес получателя письма
   ' MailFrom - адрес отправителя письма
   ' MailSubject - тема письма
   ' MailText - текст письма
   ' MailAttachment - полный путь к файлу вложения (необязательный параметр)
   ' ----------------------------------------------------------------------
   ' возвращает TRUE, если отправка почты произошла успешно, и FALSE в обратном случае
 
    Const cdoConfigURL = "http://schemas.microsoft.com/cdo/configuration/"
    On Error Resume Next: Err.Clear
 
    SMTPserver = GetSetting(Application.Name, "mail", "smtpserver", "")
    sendusername = GetSetting(Application.Name, "mail", "sendusername", "")
    sendpassword = GetSetting(Application.Name, "mail", "sendpassword", "")
    If Len(SMTPserver) = 0 Or Len(sendusername) = 0 Or Len(sendpassword) = 0 Then Exit Function
 
    Set cdoConfig = CreateObject("CDO.Configuration")
    With cdoConfig.Fields
        .Item(cdoConfigURL & "sendusing") = 2
        .Item(cdoConfigURL & "smtpauthenticate") = 1
        .Item(cdoConfigURL & "smtpserver") = SMTPserver
        .Item(cdoConfigURL & "sendusername") = sendusername
        .Item(cdoConfigURL & "sendpassword") = sendpassword
        .Item(cdoConfigURL & "smtpserverport") = 465 'порт для SSL: 465
        .Item(cdoConfigURL & "smtpusessl") = 1  'использовать аутентификацию: да
        .Update
    End With
 
 
 
 
    Set cdoMessage = CreateObject("CDO.Message")
    With cdoMessage
        Set .Configuration = cdoConfig
        .BodyPart.Charset = "koi8-r"
        .From = MailFrom:
        .cc = MailCopy
        .bcc = MailCCopy
        .To = MailTo
        .Subject = MailSubject
        .TextBody = MailText
        If Len(MailAttachment) > 0 Then .AddAttachment MailAttachment
        .send
    End With
    Set cdoMessage = Nothing: Set cdoConfig = Nothing
 
    '    If Err.Number = -2147220973 Then MsgBox ("Отсутствует связь с интернетом")
   '    If Err.Number = -2147220975 Then MsgBox ("SMTP сервер ответил отказом")
   '    If Err.Number = 0 Then MsgBox ("Письмо отправлено")
   Send_Mail = Err = 0
End Function

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


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

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

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