Как использовать RDCOMClient для отправки электронной почты Outlook из дополнительной учетной записи — перевести существующий код VBA?

Я пытаюсь отправить электронное письмо с дополнительного адреса электронной почты, используя RDCOMClient. Я воспользовался советом Как получить входящие электронные письма Outlook с помощью R RDCOMClient? и попытался написать его на VBA и перевести, но не смог получить нужные команды.

Примечание. Я не могу использовать SentOnBehalfOfName, поскольку у меня нет необходимого разрешения.

Приведенный ниже код VBA и Python успешно отправляет электронную почту из дополнительного почтового ящика.

VBA

Sub SendUsingAccount()

 Dim oAccount As Outlook.Account
 Dim oMail As Outlook.MailItem
 Set oAccount = Application.Session.Accounts.Item(2) 'Index of Mailbox
 Set oMail = Application.CreateItem(olMailItem)
 oMail.Subject = "Sent using MAPI Account"
 oMail.Recipients.Add "[email protected]"
 oMail.Recipients.ResolveAll
 oMail.SendUsingAccount = oAccount
 oMail.Send
End Sub

Питон

import win32com.client
o = win32com.client.Dispatch("Outlook.Application")
oacctouse = None
for oacc in o.Session.Accounts:
  if oacc.SmtpAddress == "[email protected]":
    oacctouse = oacc
    break

#print oacc   
#dir(oacc)
#oacc.CLSID
#oacc.GetAddressEntryFromID
Msg = o.CreateItem(0)
if oacctouse:
   Msg._oleobj_.Invoke(*(64209, 0, 8, 0, oacctouse))  # Msg.SendUsingAccount = oacctouse
Msg.To="[email protected]"    
Msg.HTMLBody = "test env instance #"
Msg.Send()

Р

Вещи, которые я пробовал в R в дополнение к угадыванию всех комбинаций, которые я могу придумать для [["SMTP"]], $SmtpAddress и т. д.:

OutApp <- COMCreate("Outlook.Application")
outMail <- OutApp$CreateItem(0)
#1 :No Error, but email sends from primary inbox
oa<-OutApp[["Session"]][["Accounts"]]
second_inbox<-oa$Item(2) 
outMail[["SendUsingAccount"]]=second_inbox
#2: Runs, but sends from primary inbox
outMail[["SendUsingAccount"]]="[email protected]"
#From what I read emails need to be accessed with a number,not the name
#3 Runs, but sends from primary inbox (the Python index changes every run)
outMail[["SendUsingAccount"]]="oacc_id_from_Python"

#Rest of reproducible code
outMail[["To"]] = "[email protected]"
outMail[["subject"]] = "Alt Acc"
outMail[["body"]] = "test"
outMail$Send()

Связанные вопросы:

Идеи?


person RustlessBroom    schedule 22.03.2018    source источник
comment
Только что опубликовал аналогичный вопрос: я пытаюсь получить электронные письма из определенного почтового ящика, когда существует несколько... stackoverflow.com/q/52649215 /5224236   -  person CatalystRPA    schedule 04.10.2018
comment
Где вы назначаете outMail в R?   -  person Parfait    schedule 04.10.2018
comment
Попробуйте поместить присваивание SendUsingAccount непосредственно перед Send, как это делается в VBA.   -  person Parfait    schedule 04.10.2018
comment
ты когда-нибудь отвечал на это?   -  person Nova    schedule 22.11.2019
comment
Какой бухгалтер? Обмен? POP3/SMTP?   -  person Dmitry Streblechenko    schedule 28.11.2019
comment
Парфе — я попытался изменить порядок, но получил тот же результат (отправляет из основного почтового ящика). Нова - Нет, я никогда не отвечал на это. Я работал над этим, используя код Python для этого раздела моего пайплайна. Затем я запустил сценарии R и py из летучей мыши. @DmitryStreblechenko - это аккаунт Exchange.   -  person RustlessBroom    schedule 17.12.2019


Ответы (1)


Источник: http://www.seancarney.ca/2020/10/07/sending-email-from-outlook-in-r/

# Send the message from an alternate account
Email[["sentonbehalfofname"]] = "[email protected]"

Этот парень попал в точку. :)

person Ryan Bradley    schedule 03.06.2021