我的客户希望将excel / vba分发给他的客户,vba会自动发送电子邮件。
也许发件人应该是其他帐户,而不是使用vba的人的Outlook帐户,因为某些私人资料可能在电子邮件中。真的有可能吗?
另一件事是在自动执行此类任务时臭名昭着的弹出警告。我听说当计算机被锁定时,Application.SendKeys并不总是有效。
CDO如何完成这项任务?
答案 0 :(得分:1)
在您的初始问题上,您可以使用MailItem.SentOnBehalfOfName
与Outlook
在安全警告上,Outlook的标准两种解决方案是:
1)使用Clickyes
2)安装Outlook Redemption
答案 1 :(得分: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