如何用Python的win32com.client从非默认Outlook邮箱发邮件
指定Outlook发件人发送邮件(Python + win32com.client)
要从Outlook的指定账户发送邮件,核心是找到目标账户并给邮件对象的SendUsingAccount属性赋值。以下是修改后的可运行代码:
import win32com.client outlook = win32com.client.Dispatch("Outlook.Application") mapi_namespace = outlook.GetNamespace("MAPI") # 替换为你要用来发件的邮箱地址 target_sender = "your_secondary_email@domain.com" sender_account = None # 遍历Outlook已配置的账户,匹配目标发件邮箱 for account in mapi_namespace.Accounts: if account.SmtpAddress == target_sender: sender_account = account break if sender_account: mail = outlook.CreateItem(0) # 关键:指定发件账户 mail.SendUsingAccount = sender_account mail.To = "recipient@domain.com" mail.CC = "cc_recipient@domain.com" mail.Subject = "指定发件人测试" mail.Body = "此邮件通过指定Outlook账户发送" mail.Send() else: print(f"未找到配置的邮箱:{target_sender}")
说明
- 目标发件邮箱必须是已经在Outlook中完成配置的账户,否则无法匹配到对应的
Account对象 - 通过
SmtpAddress匹配账户是最可靠的方式,避免因账户名称重复导致的错误 - 若需要添加附件,可继续使用
mail.Attachments.Add(附件路径)方法
内容的提问来源于stack exchange,提问作者Hélèna
相关产品推荐
相关产品推荐

