如何通过Outlook使用不同的发件人发送HTML邮件(win32com.client)
背景简介:
我正在写一个脚本,用来发送工作模板,但我通常是以我们团队的邮箱发送消息,这样团队成员都能看到。大部分功能都正常,但我在设置发件人地址时遇到了问题,可能是我做错了什么。通常在Outlook中,我在撰写消息时,只需从“发件人”下拉菜单中选择一个备用发件人。
哪个属性可以让我指定一个不同的发件地址?
类似这样的:
newMail.From = "mailer@my.org"
这是我正在使用的简化版本,用来发送HTML内容:
import win32com.client
olMailItem = 0x0
obj = win32com.client.Dispatch("Outlook.Application")
newMail = obj.CreateItem(olMailItem)
newMail.Subject = "the subject"
#newMail.Body = "body text"
newMail.HTMLBody = """<a href="https://google.com">Google Link</a>"""
newMail.To = "customer@example.org"
#newMail.CC = 'Bob'
#attachment1 = "c:\\mypic.jpg"
#newMail.Attachments.Add(attachment1)
newMail.Send()
2 个回答
0
根据Outlook对象模型中的MailItem
文档,你需要使用Sender
属性:
这个属性可以返回或设置一个地址条目对象,它对应于发送邮件的账户用户。这个属性是可以读写的。
在备注中提到:
如果你的账户配置中有多个账户,你可以设置这个属性来指定从哪个账户发送邮件。你需要把这个属性设置为特定账户的
CurrentUser
属性所代表的用户的AddressEntry
对象。如果你把
Sender
属性设置为一个没有权限通过该账户发送邮件的AddressEntry
,Outlook会报错。
所以,如果"mailer@my.org"有权限通过你的Outlook账户发送邮件,你就可以这样做;如果没有权限,那就没办法了。
在“另请参阅”部分有一个完整示例的链接(是C#的,但你应该能理解并转换)。
5
我找到了这个:
newMail.SentOnBehalfOfName = "mailer@company.com"
这让我可以通过我的用户资料,以我们的邮件列表的名义发送消息。