我有一些代码是在某些进程运行完毕后写入电子邮件实验室用户的。这是使用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
当然有办法指定我希望从中发送电子邮件的用户名/密码/服务器吗?
答案 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()