Я пытаюсь отправить электронное письмо с дополнительного адреса электронной почты, используя 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()
Связанные вопросы:
- https://social.msdn.microsoft.com/Forums/windows/en-US/7afc9e42-ca4f-491b-8c50-19556fb4e1cf/sendusingaccount-does-not-work-in-outlook-2010-возможно-bug?forum=outlookdev
- Отправка электронной почты в R через Outlook,
Идеи?
outMail
в R? - person Parfait   schedule 04.10.2018SendUsingAccount
непосредственно передSend
, как это делается в VBA. - person Parfait   schedule 04.10.2018