如何通过VBA修改Outlook邮件发件人(From)?双账户切换发件人方法
嘿,我来帮你搞定Outlook里切换发件人和用VBA修改发件人From信息的事儿,刚好之前处理过类似需求,给你分两种场景详细说说:
一、手动切换发件人(从anas3643@hotmail.com发送)
如果只是偶尔手动发邮件切换账户,不用写代码也很简单:
- 打开Outlook新建邮件窗口
- 在窗口顶部的「选项」标签页里,找到「发件人」按钮(要是没看到,右键点击工具栏空白处,勾选「发件人」就行)
- 点击「发件人」的下拉菜单,直接选你的
anas3643@hotmail.com账户就OK了 - 要是想默认用这个账户发邮件,去「文件」>「账户设置」>「账户设置」,选中
anas3643@hotmail.com,点击「设为默认值」,以后新建邮件就自动用这个账户了
二、用VBA修改邮件发件人From信息
如果需要批量处理或者自动化操作,用VBA就很方便。针对你的hotmail账户(属于Outlook.com/Microsoft 365类型),给你两种常用场景的代码:
1. 新建邮件时直接指定发件人
这段代码会创建一封新邮件,并自动把发件人设为anas3643@hotmail.com:
Sub SendFromHotmailAccount() Dim objMail As Outlook.MailItem Dim objAccount As Outlook.Account ' 创建新的邮件对象 Set objMail = Application.CreateItem(olMailItem) ' 遍历所有已添加的账户,找到目标邮箱 For Each objAccount In Application.Session.Accounts If objAccount.SmtpAddress = "anas3643@hotmail.com" Then ' 指定用这个账户发送邮件 Set objMail.SendUsingAccount = objAccount Exit For End If Next objAccount ' 这里可以设置邮件的收件人、主题、内容(按需修改) With objMail .To = "收件人邮箱@example.com" .Subject = "测试:从Hotmail账户发送" .Body = "这是通过VBA指定发件人发送的测试邮件" .Display ' 如果你想直接发送,把.Display改成.Send就行 End With ' 释放内存 Set objMail = Nothing Set objAccount = Nothing End Sub
2. 修改已有的草稿邮件发件人
如果已经写好草稿,想把发件人改成anas3643@hotmail.com,用这段代码:
Sub ChangeDraftSenderToHotmail() Dim objDraft As Outlook.MailItem Dim objAccount As Outlook.Account ' 先检查是否选中了邮件 If TypeName(Application.ActiveExplorer.Selection.Item(1)) = "MailItem" Then Set objDraft = Application.ActiveExplorer.Selection.Item(1) ' 确认是未发送的草稿 If objDraft.Sent = False Then ' 找到目标账户 For Each objAccount In Application.Session.Accounts If objAccount.SmtpAddress = "anas3643@hotmail.com" Then ' 修改发件人账户 Set objDraft.SendUsingAccount = objAccount ' 保存修改 objDraft.Save MsgBox "搞定!发件人已改为anas3643@hotmail.com" Exit For End If Next objAccount Else MsgBox "请选中一封未发送的草稿邮件哦!" End If Else MsgBox "先选中一封邮件再运行代码哈!" End If ' 释放内存 Set objDraft = Nothing Set objAccount = Nothing End Sub
重要注意事项:
- 要启用Outlook的宏功能:打开「文件」>「选项」>「信任中心」>「信任中心设置」>「宏设置」,选择「启用所有宏」(或者「通知我所有宏」,运行时允许即可),然后重启Outlook才能生效
- 如果你用的是Exchange账户,修改发件人可能需要额外权限,但你的hotmail账户用
SendUsingAccount属性就完全没问题 - 测试代码前建议先备份重要邮件,避免误操作
内容的提问来源于stack exchange,提问作者انس الواصل




