Python-从共享邮箱发送电子邮件,而无需使用“代表”

时间:2019-08-07 22:54:28

标签: python-3.x outlook

我正在尝试从“共享邮箱”发送电子邮件,而不使用“代表”。

我能够从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选择要发送的帐户,我可以手动发送电子邮件。

我在这里想念什么。请帮助我。

2 个答案:

答案 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。