Как отправить электронную почту из определенной учетной записи Outlook, используя Excel (VBA)? - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь отправлять электронные письма, используя Excel (он генерирует и отправляет электронные письма автоматически).У меня есть рабочий код для отправки электронных писем, однако он использует учетную запись outlook по умолчанию.

Я пытался изменить код для отправки его с определенного электронного письма, однако теперь, когда я пытаюсь запустить макрос, ничего не происходитслучается.Что-то не так с кодом, или он не работает из-за другой проблемы (с outlook и учетными записями / разрешениями, связанными с ним)?

Sub CommandButton1_Click()

Dim wb As Workbook
Dim olApp As Outlook.Application
Dim olMail As Outlook.MailItem
Dim q As Long


Dim oAccount As Outlook.Account


Set wb = ThisWorkbook



For Each oAccount In Outlook.Application.Session.Accounts

If oAccount = "theEmailiWantToUse@domain.com" Then

    For q = 2 To 3 'LastRow

eName = wb.Sheets(1).Cells(q, 2).Value

Set olApp = New Outlook.Application
Set olMail = olApp.CreateItem(olMailItem)

mailBody = "Hello, "

With olMail
    .To = Worksheets("Emails").Cells(q, 4).Value
    .Subject = eName
    .HTMLBody = "<!DOCTYPE html><html><head><style>"
    .HTMLBody = .HTMLBody & "body{font-family: Calibri, ""Times New Roman"", sans-serif; font-size: 14px}"
    .HTMLBody = .HTMLBody & "</style></head><body>"
    .HTMLBody = .HTMLBody & mailBody & "</body></html>"

    Set .SendUsingAccount = oAccount
    .Display
     ' .Send

     End With

    Next

Else
End If

 Next

     Set olMail = Nothing
     Set olApp = Nothing

 End Sub

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

Спасибо.

Ответы [ 2 ]

3 голосов
/ 26 марта 2019

Добавьте эту строку в olMail

    .SentOnBehalfOfName = "youraddress" 'here change this
1 голос
/ 26 марта 2019

Пожалуйста, используйте эту процедуру, чтобы найти номер счета отправителя.

Sub Which_Account_Number()
'Don't forget to set a reference to Outlook in the VBA editor
    Dim OutApp As Outlook.Application
    Dim I As Long

    Set OutApp = CreateObject("Outlook.Application")

    For I = 1 To OutApp.Session.Accounts.Count
        MsgBox OutApp.Session.Accounts.Item(I) & " : This is account number " & I
    Next I
End Sub

Тогда

   .SendUsingAccount = olApp.Session.Accounts.Item(5)' whatever account index number you want to send. i have chosen 5

вместо

Set .SendUsingAccount = oAccount

Этот метод работает для меня.Вы можете в дальнейшем интегрировать эту концепцию в свою программу.Пожалуйста, убедитесь, что ссылка на Outlook Object Library установлена ​​в Tools/References.

...