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

通过Python从特定Outlook帐户发送电子邮件?,python,outlook,pywin32,win32com,Python,Outlook,Pywin32,Win32com,我有一些代码,每当某些进程完成运行时,都会向实验室用户发送电子邮件。这是使用SMTP从gmail帐户发送的 但是,我的主管希望邮件从部门的正式地址发送,这意味着我必须使用Outlook和MAPI。我已经创建了一个帐户,我希望电子邮件来源于该帐户,而不考虑正在运行作业的实验室机器。问题是,我只能从本地Outlook帐户获取要发送的电子邮件,而且并非所有实验室机器都有本地帐户 import win32com.client as win32 outlook = win32.Dispatch('outl

我有一些代码,每当某些进程完成运行时,都会向实验室用户发送电子邮件。这是使用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

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

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

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


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

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


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

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

我知道这来得很晚,但这就是我如何选择特定电子邮件地址以从中发送电子邮件的方法。该地址必须位于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()

我知道这来得很晚,但我就是这样选择了一个特定的电子邮件地址来发送电子邮件的。该地址必须位于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()