Как отправить электронную почту из Microsoft Access с адресов, сохраненных в запросе?

#email #ms-access

#Адрес электронной почты #ms-access

Вопрос:

У меня есть таблица с именем PersonsContactDetails, где у меня есть два поля: ContactDetailType и ContactDetailValue. В первом поле хранится тип электронного письма: «Личное электронное письмо», «Рабочее электронное письмо», «Общее электронное письмо», во втором поле хранится адрес электронной почты.

Я запускаю запрос PersonalEmailList и WorkEmailList, в которых хранятся не только соответствующие типы электронных писем, но и страна происхождения, город и пол.

Я хотел бы отправить электронное письмо всем контактам, в зависимости от их страны происхождения, города или пола. Я попытался отфильтровать QueryDataSheet и запустить цикл VBA с OpenRecordset, но я получаю «Ошибку несоответствия типов», я понимаю, что OpendRecordSet работает только с таблицами данных.

Как я могу перейти к этому решению, зная, что моя цель во всем этом — отфильтровать электронные письма контактов по моему запросу в зависимости от их страны, города или пола, и оттуда отправить электронное письмо (конечно, используя поле BCC).

Ответ №1:

Достаточно простой способ — создать набор записей из вашей таблицы или запроса, например:

 Dim db As DAO.Database
Dim rs As DAO.Recordset

''If this is run from a form, it may suit to use recordsetclone, otherwise

Set db = CurrentDB
s = "SELECT PersonalEmail FROM PersonsContactDetails " _
  amp; "WHERE CountryOfOrigin = 'Tsort'"
Set rs = db.OpenRecordset

Do While Not rs.EOF
   If Not IsNull(rs!PersonalEmail) Then
      EmailList = ";" amp; rs!PersonalEmail
   End If

   rs.MoveNext
Loop

''http://msdn.microsoft.com/en-us/library/bb214075(v=office.12).aspx

DoCmd.SendObject acSendNoObject, , , , , Mid(EmailList, 2), "Test", "Hi", True