Как создать письмо с MS-доступом, которое будет получать адреса электронной почты из запроса, используя VBA - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь добавить код VBA в MS Access 2013, который будет захватывать электронные письма из запроса, указывающего на таблицу, и заполнять поле .BCC в Outlook.Я могу успешно получать электронные письма, заполненные в поле .To, с помощью строковой функции .recipients.add, но не могу понять, как сделать то же самое в поле .BCC Outlook.

I 'Я пробовал десятки примеров, и самое близкое, что я получил, это заполнение последнего электронного письма из таблицы в поле .BCC.

Private Sub Command180_Click()
    Dim rs As DAO.Recordset
    Dim OlApp As Object
    Dim OlMail As Object
    Dim strEmail As String

    Set OlApp = CreateObject("Outlook.Application")
    Set OutMail = OlApp.CreateItem(olMailItem)

    Set rs = CurrentDb.OpenRecordset("SELECT POCEmail FROM qDistroActiveEmails")
    With rs
        Do Until .EOF
            strEmail = !PocEmail

            With OutMail
                .BCC = strEmail
                .Recipients.Add strEmail
            End With

            rs.MoveNext
        Loop
    End With
    rs.Close
    Set rs = Nothing

    OutMail.Display

End Sub

, если бы я мог получить приведенный выше код для заполнения поля .BCC, это было быбольшой.

Ответы [ 2 ]

2 голосов
/ 13 апреля 2019

Recipients.Add возвращает объект Recipient (который ваш код игнорирует).Установите для его свойства Type значение olBCC (3)

Dim recip as Object
...
With OutMail
  set recip = .Recipients.Add(strEmail)
  recip.Type = 3
End With
1 голос
/ 13 апреля 2019

Свойство BCC принимает строку адресов электронной почты, разделенных точкой с запятой.Также обратите внимание, что этот код добавляет электронные письма получателям и BCC, что означает, что они будут получать дубликаты электронных писем.Если вы хотите, чтобы они были только слепыми копиями, не добавляйте их в Получатели.

Используйте это вместо:

Private Sub Command180_Click()
    Dim rs As DAO.Recordset
    Dim OlApp As Object
    Dim OutMail As Object
    Dim strEmail As String
    Dim bccEmails As String

    Set OlApp = CreateObject("Outlook.Application")
    Set OutMail = OlApp.CreateItem(olMailItem)

    Set rs = CurrentDb.OpenRecordset("SELECT Email FROM Emails")
    With rs
        Do Until .EOF
            strEmail = !Email
            ' add email to BCC email list string
            bccEmails = bccEmails & strEmail & ";"

            With OutMail
                .Recipients.Add strEmail
            End With

            rs.MoveNext
        Loop
    End With
    rs.Close
    Set rs = Nothing

    ' set BCC using string of concatenated emails                  
    OutMail.BCC = left(bccEmails, Len(bccEmails) - 1) ' trims trailing semicolon

    OutMail.Display

End Sub
...