我们可以使用 VBA 发送电子邮件而不使用 Outlook 运行且不使用 SMTP 方法吗?

问题描述 投票:0回答:1

我们一直使用VBA代码使用Smtp服务发送电子邮件,但不知何故微软将其视为垃圾邮件并且无法再接收它。

因此,我们已开始使用 Outlook 应用程序发送电子邮件,而不是如本线程中所述(https://answers.microsoft.com/en-us/msoffice/forum/all/use-excel-vba-in-office-365 -发送自动-e/f6b2042b-a17e-4aa4-99ea-f647b82cc8fd?page=2).

这种方法的问题是必须打开/运行 Outlook。如果没有,他们只会坐在发件箱中等待我们打开 Outlook。这是预期的行为吗?VBA 中还有其他替代方案吗?

因此,我们已开始使用 Outlook 应用程序发送电子邮件,而不是如本线程中所述(https://answers.microsoft.com/en-us/msoffice/forum/all/use-excel-vba-in-office-365 -发送自动-e/f6b2042b-a17e-4aa4-99ea-f647b82cc8fd?page=2).

vba
1个回答
0
投票

如果没有使用 CreateObject 打开,您可以创建一个 Outlook 实例 但我更喜欢用户在需要时打开 Outlook:

Option Explicit
Private Declare PtrSafe Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Sub DoOutlookStuff()
If Not IsOutlookOpen Then Exit Sub
' Your code here
End Sub

Function IsOutlookOpen() As Boolean
    Dim iHwnd As LongPtr, s As String
    Const classout As String = "rctrl_renwnd32"
    iHwnd = FindWindow(classout, s)
    If iHwnd > 0 Then
        IsOutlookOpen = True
    Else
    MsgBox "Please Open Outlook first"
    End If
End Function
© www.soinside.com 2019 - 2024. All rights reserved.