Как заполнить .Поле BCC в электронном письме?

#vba #ms-access #outlook

#vba #ms-access #outlook

Вопрос:

В MS Access 2013 я пытаюсь получить адреса электронной почты из запроса, указывающего на таблицу, и заполнить .BCC поле в электронном письме Outlook.

Я могу заполнить .To поле адресами электронной почты, используя .recipients.add .

Как я могу сделать то же самое в .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
  

Ответ №1:

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

 Dim recip as Object
...
With OutMail
  set recip = .Recipients.Add(strEmail)
  recip.Type = 3
End With
  

Комментарии:

1. Если ответ отвечает на ваш вопрос, пожалуйста, отметьте его как таковой. Спасибо!

Ответ №2:

Свойство 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 amp; strEmail amp; ";"

            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