首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用VBA更改Outlook 2010中的帐户设置

使用VBA更改Outlook 2010中的帐户设置
EN

Stack Overflow用户
提问于 2016-05-02 18:33:10
回答 2查看 1.3K关注 0票数 1

我有大量的转发电子邮件地址,这些地址都设置为转发到相同的电子邮件帐户。我发现这是有用的,因为如果一家企业被黑客入侵,我的电子邮件地址被盗,那么我只有更改该企业的电子邮件地址。例如,"amazon@mydomain.com“、"ebay@mydomain.com”和"facebook@mydomain.com“都会被转发到"mailbox@mydomain.com”。

当我想要向企业发送电子邮件时,我必须进入Outlook并更改帐户设置,将转发电子邮件地址作为电子邮件地址。我觉得这很烦人。我知道我可以在写邮件的时候改变邮件的发件人,但是收件人看到的是"J·史密斯代表newaddress@mydomain.com“。我宁愿它只显示我在发件人字段中使用的地址,如果我进入帐户设置并在那里更改电子邮件地址,它就会这样做。

这将是很好的宏设置,询问我想使用哪个电子邮件地址,然后为我发送电子邮件。我已经查找了如何在VBA中更改电子邮件帐户详细信息,但详细信息似乎都是只读的。有没有办法干净利落地更改我的“发件人”电子邮件地址?或者甚至在VBA中设置一个新的电子邮件帐户,并在发送后立即删除它?

EN

回答 2

Stack Overflow用户

发布于 2016-05-02 19:21:51

尝试创建一个带有组合框和按钮的用户表单。将所有可用帐户加载到组合框中,以便从中进行选择:

代码语言:javascript
运行
复制
Private Sub UserForm_Initialize()

Dim acc As Account

For Each acc In ThisOutlookSession.Session.Accounts

    Me.ComboBox1.AddItem acc.UserName
Next acc
End Sub

然后向按钮添加一些代码,以选择适当的帐户:

代码语言:javascript
运行
复制
Dim objApp As Outlook.Application
Dim objMail As Outlook.MailItem

Set objApp = ThisOutlookSession.Application

Set objMail = objApp.CreateItem(olMailItem)

With objMail

    .To = "lala@lala.com"
    .CC = ""
    .BCC = ""
    .Subject = "Test"
    .Body = "Test"

    Dim i As Integer

    For i = 1 To ThisOutlookSession.Session.Accounts.Count Step 1

        If ThisOutlookSession.Session.Accounts.Item(i).UserName = Me.ComboBox1.Value Then

            .SendUsingAccount = ThisOutlookSession.Session.Accounts.Item(i)
        End If
    Next i

    .Display
End With

当你创建一个新的电子邮件时,可能会有一个事件被调用,否则你必须添加一个按钮或其他东西来调出表单。

票数 0
EN

Stack Overflow用户

发布于 2019-03-18 06:25:52

我遇到了完全相同的问题,并最终能够通过安装Outlook Redemption并使用以下脚本来解决它。

代码语言:javascript
运行
复制
                ' Redemption code below. Must install Redemption to work.
                ' http://www.dimastr.com/redemption/faq.htm#14

                Dim sItem, Tag
                Set sItem = CreateObject("Redemption.SafeMailItem")
                sItem.Item = oMailItem
                Tag = sItem.GetIDsFromNames("{00020386-0000-0000-C000-000000000046}", "From")
                Tag = Tag Or &H1E     'the type is PT_STRING8
                sItem.Fields(Tag) = GetHashedReply(oMailItem)
                Tag = sItem.GetIDsFromNames("{00020386-0000-0000-C000-000000000046}", "Sender")
                Tag = Tag Or &H1E     'the type is PT_STRING8
                sItem.Fields(Tag) = GetHashedReply(oMailItem)
                sItem.Subject = sItem.Subject  'to trick Outlook into thinking that something has changed
                sItem.Save

...where oMailItem是一个普通的Outlook MailItem,您可以使用CreateItem()获取它,或者在ItemSend()参数中传递给您。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36980334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档