我正在尝试从“共享邮箱”发送电子邮件,而不使用“代表”。
我能够从Outlook进入该邮箱并手动发送电子邮件,当我这样做时,它不会放入标语的“代表”。
但是我不能用编程语言来做同样的事情。
到目前为止,我已经尝试过这些并学习了以下课程。
import win32com.client as win32
def send_email(sender,recipient):
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = recipient
mail.Subject = "Test Emails"
mail.HTMLBody = "Test Content"
mail.SendUsingAccount = sender
mail.Send()
recipient = "abc@company.com"
sender= "Mailbox@company.com"
send_email(sender,recipient)
这段代码不是从Mailbox@company.com发送的
而是从我的个人前景帐户发送它。
因此,我继续查找,如果可以看到我拥有的每个帐户,则不会在其中显示邮箱帐户。
import win32com.client as win32
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
for acc in outlook.Session.Accounts:
print (acc)
但是我确实可以访问。我在我的视野中看到它。通过使用Outlook选择要发送的帐户,我可以手动发送电子邮件。
我在这里想念什么。请帮助我。
答案 0 :(得分:0)
MailItem.SendUsingAccount属性返回或设置一个Account
对象,该对象表示要发送MailItem
的帐户。因此,您需要获取正确的帐户对象,然后将其分配给属性。它不接受字符串值。
这是VBA示例:
Sub SendUsingAccount()
Dim oAccount As Outlook.account
For Each oAccount In Application.Session.Accounts
If oAccount.AccountType = olPop3 Then
Dim oMail As Outlook.MailItem
Set oMail = Application.CreateItem(olMailItem)
oMail.Subject = "Sent using POP3 Account"
oMail.Recipients.Add ("someone@example.com")
oMail.Recipients.ResolveAll
Set oMail.SendUsingAccount = oAccount
oMail.Send
End If
Next
End Sub
或者Python:
import win32com.client
o = win32com.client.Dispatch("Outlook.Application")
oacctouse = None
for oacc in o.Session.Accounts:
if oacc.SmtpAddress == "sender@mail.com":
oacctouse = oacc
break
Msg = o.CreateItem(0)
if oacctouse:
Msg._oleobj_.Invoke(*(64209, 0, 8, 0, oacctouse)) # Msg.SendUsingAccount = oacctouse
if to:
Msg.To = ";".join(to)
if cc:
Msg.CC = ";".join(cc)
if bcc:
Msg.BCC = ";".join(bcc)
Msg.HTMLBody = ""
Msg.Send()
答案 1 :(得分:0)
解决方案是,返回到管理团队,要求他们从邮箱设置中禁用“代表”,然后开始在代码中使用Sentonbehalfof。