Сохранение настроек почтового аккаунта в реестре

Форма редактирования настроек почты в Excel

Макрос предназначен для сохранения в реестре (и изменения через форму) настроек почтового аккаунта.

Эти настройки используются макросом рассылки почты Send_Mail
(для отправки почты из Excel без применения специализированных почтовых программ)

При запуске формы, она считывает из реестра Windows ранее сохранённые настройки.

Данный подход позволяет избежать хранения конфиденциальных данных в коде программы, что важно, если вы передаёте файл с программой рассылки почты другим людям.
При использовании этой формы ввода, каждый пользователь сможет самостоятельно задать макросу свои настройки своей учётной записи

После редактирования логина, пароля или адреса SMTP-сервера,
нажмите кнопку «Сохранить и проверить», чтобы сохранить в реестре изменённые данные.

После сохранения настроек, макрос попытается отправить тестовое письмо, используя сохранённые настройки.
(для этого, помимо формы, в книге Excel в стандартном модуде должен присутствовать макрос Send_Mail)

Если введённые настройки корректны, на компьютере есть доступ к интернету, и в системе установлена библиотека CDO for Windows,
будет выведено сообщение об успешной отправке тестового письма.

Данную форму можно использовать и для сохранения в реестре любых других настроек макроса.

Код сохранения настроек, и отправки тестового письма (на случайно выбранный адрес):

Private Sub CommandButton_CheckAndSave_Click()
    On Error Resume Next: Dim res As Boolean
    ' сохранение изменений
    SaveSetting Application.Name, "mail", "smtpserver", Trim(Me.smtpserver)     ' Ваш SMTPServer
    SaveSetting Application.Name, "mail", "sendusername", Trim(Me.sendusername)   ' Ваша учетная запись
    SaveSetting Application.Name, "mail", "sendpassword", Trim(Me.sendpassword)   ' Ваш  пароль

    ' пробуем отправить тестовое пиьмо, использую функцию Send_Mail
    res = Run("Send_Mail", "test@mail.ru", Trim(Me.sendusername), "test", "test")
    If Err.Number = 1004 Then MsgBox "Проверить настройки почты не удалось", _
       vbExclamation, "Макрос «Send_Mail» не найден": Exit Sub ' если макрос не найден
       
    If res Then ' если отправка прошла успешно
        MsgBox "Настройки почтового аккаунта проверены - почта успешно отправляется", vbInformation, "Всё ОК"
    Else
        MsgBox "Настройки почтового аккаунта неверны, SMTP сервер недоступен, " & vbNewLine & _
               "или отправка почты не поддерживается вашей операционной системой", vbExclamation, "Что-то не так..."
    End If
End Sub

Вложения:

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Встроенная в Excel функция делает то же самое (сохраняет временный файл, и его уже отправляет)
Только это действие незаметно для пользователя

да, так работает ;). Спасибо.
А как же Ехсе1 из своего меню отправляет открытые файлы?, может там какая-то заковырка есть?

А не получится у вас таким способом отправить книгу Excel.
Если вы используете ActiveWorkbook.Name, это значит, что файл открыт в Excel, а открытые файлы Windows блокирует.
Отправлять надо файл, не открытый в какой-либо программе.
В случае с книгой Excel, надо создать предварительно копию открытой книги (например, методом ActiveWorkbook.SaveCopyAs "ПолныйПутьКФайлу"),
и потом в качестве параметра MailAttachment задавать путь к этой копии файла "ПолныйПутьКФайлу")

а в примере есть проверка учетной записи Function Send_Mail и параметр MailAttachment As String, так вот, когда его указываешь (например : ActiveWorkbook.Name или FullName), письмо не отправляется. Ошибка -2146697203.

аттачмент в сообщение не цепляется

В какое ещё сообщение?

В статье описано, как сохранить учетную запись почты в реестре Windows
Тут ни слова про какие-то вложения (attachment)...

аттачмент в сообщение не цепляется :(
выдает ошибку

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
  ____                            ____    _    
|___ \ __ _ __ _ _ __ / ___| | | __
__) | / _` | / _` | | '_ \ \___ \ | |/ /
/ __/ | (_| | | (_| | | |_) | ___) | | <
|_____| \__, | \__, | | .__/ |____/ |_|\_\
|_| |_| |_|
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.