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
'+++ Данные обязательные к заполнению
SMTPserver = "" ' SMTPServer: для Mail.ru "smtp.mail.ru"; для Яндекса "smtp.yandex.ru"; для Рамблера "mail.rambler.ru"
sTo = "" 'Кому
sFrom = "" 'От кого
'--- Данные обязательные к заполнению
'sUsername = "" ' Учетная запись на сервере
'sPass = "" ' Пароль к почтовому аккаунту
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
lLastRow = Cells.SpecialCells(xlLastCell).Row
sSubject = "Сформирована заявка №" + Cells(lLastRow, 1).Value 'Тема письма
sBody = Cells(lLastRow, 2).Value + " | " + Cells(lLastRow, 3).Value 'Текст письма
'/sAttachment = "C:/Temp/Книга1.xls" 'Вложение(полный путь к файлу)
'Проверка наличия файла по указанному пути
'If Dir(sAttachment, vbDirectory) = "" Then sAttachment = ""
'Назначаем конфигурацию CDO
Set oCDOCnf = CreateObject("CDO.Configuration")
With oCDOCnf.Fields
.Item(CDO_Cnf & "sendusing") = 2
.Item(CDO_Cnf & "smtpauthenticate") = 0 ' необходимо изменить на 1, если необходима авторизация
.Item(CDO_Cnf & "smtpserver") = SMTPserver
'если необходимо указать SSL
'.Item(CDO_Cnf & "smtpserverport") = 465 'для Яндекса и Gmail 465
'.Item(CDO_Cnf & "smtpusessl") = True
'=====================================
'.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
If Len(sAttachment) > 0 Then .AddAttachment sAttachment
.Send
End With
Select Case Err.Number
Case -2147220973: sMsg = "Нет доступа к Интернет"
Case -2147220975: sMsg = "Отказ сервера SMTP"
Case 0: sMsg = "Письмо отправлено"
Case Else: sMsg = "Ошибка номер: " & Err.Number & vbNewLine & "Описание ошибки: " & Err.Description
End Select
MsgBox sMsg, vbInformation, "www.Excel-VBA.ru"
Set oCDOMsg = Nothing: Set oCDOCnf = Nothing
End Sub
Пример использования:
ОтправкаПисьмаИзExcel
Ссылки:
- Отправка письма макросом Источник 1:
КАК ОТПРАВИТЬ ПИСЬМО ИЗ EXCEL? - Отправка письма макросом Источник 2:
Как отправить письмо из Excel макросом VBA? Программная рассылка писем из Excel через Outlook - Получение данных ячейки:
VBA Excel. Ячейки (обращение, запись, чтение, очистка) - Определение последней колонки / строки:
КАК ОПРЕДЕЛИТЬ ПОСЛЕДНЮЮ ЯЧЕЙКУ НА ЛИСТЕ ЧЕРЕЗ VBA? - Добавление кнопки:
Назначение макроса форме или кнопке управления