我在这里查看另一个问题的代码片段(MS Access VBA):https ://stackoverflow.com/a/17975507/1085885
现在,此代码仅在我在 Outlook 打开时运行它时才有效。此代码有什么方法可以“打开 Outlook”然后运行所有发送代码?
其次,如何选择从哪个 Outlook 配置文件发送?我可以访问几个不同的配置文件,它是从我的主要收件箱发送的,但我希望它来自我的第二个收件箱。
我在这里查看另一个问题的代码片段(MS Access VBA):https ://stackoverflow.com/a/17975507/1085885
现在,此代码仅在我在 Outlook 打开时运行它时才有效。此代码有什么方法可以“打开 Outlook”然后运行所有发送代码?
其次,如何选择从哪个 Outlook 配置文件发送?我可以访问几个不同的配置文件,它是从我的主要收件箱发送的,但我希望它来自我的第二个收件箱。
您需要登录到指定的配置文件。创建 Outlook 应用程序实例后
Set oApp = CreateObject("Outlook.application")
添加如下内容:
set oNS = oApp.GetNamespace.Logon
oNS.Logon("MyProfileName")
请注意,如果 Outlook 已经在运行,Logon 将不执行任何操作。您将需要使用扩展 MAPI(C++ 或 Delphi 或像Redemption ( RDOSession .Logon) 之类的 MAPI 包装器)来登录到指定的配置文件。
为什么不使用单个配置文件并创建多个帐户?然后,您可以设置MailItem.SendUsaingAccount
属性以指定特定帐户。
试试这个方法。
Private Sub Command1_Click()
Dim bStarted As Boolean
Dim oOutlookApp As Outlook.Application
Dim oItem As Outlook.MailItem
On Error Resume Next
'Get Outlook if it's running
Set oOutlookApp = GetObject(, "Outlook.Application")
If Err <> 0 Then
'Outlook wasn't running, start it from code
Set oOutlookApp = CreateObject("Outlook.Application")
bStarted = True
End If
'Create a new mailitem
Set oItem = oOutlookApp.CreateItem(olMailItem)
With oItem
'Set the recipient for the new email
.To = "receiver@gmail.com"
.Send
End With
If bStarted Then
' 'If we started Outlook from code, then close it
oOutlookApp.Quit
End If
'Clean up
Set oItem = Nothing
Set oOutlookApp = Nothing
End Sub