通过Python从特定Outlook帐户发送电子邮件?

时间:2015-05-14 17:24:35

标签: python outlook pywin32 win32com

我有一些代码是在某些进程运行完毕后写入电子邮件实验室用户的。这是使用SMTP从gmail帐户发送的。

但是,我的主管希望从官方部门地址发送邮件,这意味着我使用了Outlook和MAPI。我创建了一个帐户,我希望电子邮件来自该帐户,而不管正在运行作业的实验室机器。问题是我只能从本地Outlook帐户收到要发送的电子邮件,而且并非所有实验室计算机都有本地帐户。

import win32com.client as win32
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = 'user@domain.com'
mail.Subject = 'Message Subject'
mail.body = 'Message text. Message text'
mail.send

当然有办法指定我希望从中发送电子邮件的用户名/密码/服务器吗?

3 个答案:

答案 0 :(得分:2)

Outlook对象模型不提供配置配置文件的任何内容。但是,如果您在Outlook中配置了帐户,则可能会发现MailItem类的SendUsingAccount属性很有用。它允许设置一个Account对象,该对象代表发送MailItem的帐户。

您可能会发现以下链接有用:

答案 1 :(得分:2)

正如Eugene建议的那样,您可以手动创建POP3 / SMTP帐户并在调用Send之前将其分配给MailItem.SendUsingAccount属性,也可以使用Redemption及其动态创建新的POP3 / SMTP帐户RDOSession.Accounts.AddPOP3Account方法。

答案 2 :(得分:0)

我知道这来得很晚,但是这就是我设法选择特定电子邮件地址来发送电子邮件的方式。该地址必须在您的Outlook地址中。

import win32com.client as win32

outlook = win32.Dispatch('outlook.application') 

mail = outlook.CreateItem(0)
mail.Subject = "Test subject"
mail.To = "yourrecipient@gmail.com"

# If you want to set which address the e-mail is sent from. 
# The e-mail needs to be part of your outlook account.
From = None
for myEmailAddress in outlook.Session.Accounts:
    if "iongroup.com" in str(myEmailAddress):
        From = myEmailAddress
        break

if From != None:
    # This line basically calls the "mail.SendUsingAccount = xyz@email.com" outlook VBA command
    mail._oleobj_.Invoke(*(64209, 0, 8, 0, From))

mail.Send()