通过Python从特定Outlook帐户发送电子邮件?
我有一些代码,每当某些进程完成运行时,都会向实验室用户发送电子邮件。这是使用SMTP从gmail帐户发送的 但是,我的主管希望邮件从部门的正式地址发送,这意味着我必须使用Outlook和MAPI。我已经创建了一个帐户,我希望电子邮件来源于该帐户,而不考虑正在运行作业的实验室机器。问题是,我只能从本地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
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类的属性很有用。它允许设置一个对象,该对象表示发送邮件项目的帐户 您可能会发现以下链接很有用:
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()