我有大量的转发电子邮件地址,这些地址都设置为转发到相同的电子邮件帐户。我发现这是有用的,因为如果一家企业被黑客入侵,我的电子邮件地址被盗,那么我只有更改该企业的电子邮件地址。例如,"amazon@mydomain.com“、"ebay@mydomain.com”和"facebook@mydomain.com“都会被转发到"mailbox@mydomain.com”。
当我想要向企业发送电子邮件时,我必须进入Outlook并更改帐户设置,将转发电子邮件地址作为电子邮件地址。我觉得这很烦人。我知道我可以在写邮件的时候改变邮件的发件人,但是收件人看到的是"J·史密斯代表newaddress@mydomain.com“。我宁愿它只显示我在发件人字段中使用的地址,如果我进入帐户设置并在那里更改电子邮件地址,它就会这样做。
这将是很好的宏设置,询问我想使用哪个电子邮件地址,然后为我发送电子邮件。我已经查找了如何在VBA中更改电子邮件帐户详细信息,但详细信息似乎都是只读的。有没有办法干净利落地更改我的“发件人”电子邮件地址?或者甚至在VBA中设置一个新的电子邮件帐户,并在发送后立即删除它?
发布于 2016-05-02 19:21:51
尝试创建一个带有组合框和按钮的用户表单。将所有可用帐户加载到组合框中,以便从中进行选择:
Private Sub UserForm_Initialize()
Dim acc As Account
For Each acc In ThisOutlookSession.Session.Accounts
Me.ComboBox1.AddItem acc.UserName
Next acc
End Sub
然后向按钮添加一些代码,以选择适当的帐户:
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
当你创建一个新的电子邮件时,可能会有一个事件被调用,否则你必须添加一个按钮或其他东西来调出表单。
发布于 2019-03-18 06:25:52
我遇到了完全相同的问题,并最终能够通过安装Outlook Redemption并使用以下脚本来解决它。
' 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()参数中传递给您。
https://stackoverflow.com/questions/36980334
复制相似问题