0

我的客户想将 excel/vba 分发给他的客户,vba 会自动发送电子邮件。

也许发件人应该是其他帐户,而不是使用 vba 的人的 Outlook 帐户,因为电子邮件中可能包含一些私人内容。真的有可能吗?

另一件事是自动执行此类任务时臭名昭著的弹出警告。我听说 Application.SendKeys 在计算机锁定时并不总是有效。

CDO 是如何完成这项任务的?

4

2 回答 2

1

在您最初的问题上,您可以使用MailItem.SentOnBehalfOfNameOutlook

在安全警告上,Outlook 的标准两种解决方案是:
1) 使用Clickyes
2) 安装Outlook Redemption

于 2012-05-23T03:53:15.990 回答
0

您不必使用 Outlook 发送电子邮件。如您所问,CDO 无需使用 Outlook 即可工作。

这里有一些代码可以帮助您入门。

Public Sub SendEmail(Subject As String, Body As String, ToPerson as String)

Dim iCfg As Object
Dim iMsg As Object

Set iCfg = CreateObject("CDO.Configuration")
Set iMsg = CreateObject("CDO.Message")

With iCfg.Fields
   .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
   .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
   .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
   .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
   .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "email-account"
   .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"
   .Item("http://schemas.microsoft.com/cdo/configuration/sendemailaddress") = "account@domain.com"
   .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
   .Update
End With

With iMsg
   .Configuration = iCfg
   .Subject = Subject
   .TextBody = Body
   .To = ToPerson
   .Send
End With

Set iMsg = Nothing
Set iCfg = Nothing

End Sub
于 2012-05-23T03:11:52.110 回答