You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过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,提问作者انس الواصل

火山引擎 最新活动