我正在尝试使用Visual Basic从Visual Basic脚本发送电子邮件,不做任何用户操作。这个想法出现在下面的第一个参考文献中。
http://forums.mozillazine.org/viewtopic.php?f=39&t=540783
http://forums.mozillazine.org/viewtopic.php?t=203591
https://developer.mozilla.org/en-US/docs/Mozilla/Command_Line_Options#-options
脚本确实有效但我无法弄清楚如何包含附件。我对VB知之甚少,但在第一篇文章中,“和chr(34)(”我假设)的混合似乎很奇怪。此外,第一个和第三个参考文献之间的“mailto”和“to”之间的差异令人不安。
这是我尝试过的。
dim s
Set s = CreateObject("WScript.Shell")
s.run """thunderbird.exe""" & " -compose mailto:mdorl@wisc.edu? &subject=""send mail 3""&body=""nice body text""&attachment='file:///c:/Documents and Settings/Mike/My Documents/sendmail/vb/msg.txt'"
WScript.Sleep 1000
s.SendKeys "^{ENTER}"
WScript.Sleep 1000
这将编写并发送一封没有用户操作但没有附件的电子邮件。我在文件名周围尝试了单引号和双引号。
如果我将文件名更改为不存在的文件,则会发送没有附件的电子邮件但是实际发送邮件需要用户操作。
答案 0 :(得分:2)
编辑了我的回答,因为我过去几周一直在学习一两件事;)
你需要一个撇号:和cc:包含多个收件人的列表 你还需要在你要发送的任何主体文本或附件周围加一个撇号
如果你把撇号放到你的VBA编辑器中,它只是将它注释掉,所以你可以通过使用Chr(39)
来逃避它另外,正如文档所示,您需要 附件='文件:/// C:/test.txt' 其中包括file:///
我已经包含了一些我在下面工作的例子
Dim reportTB As Object
Set reportTB = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
reportTB.Run "thunderbird.exe -compose to=bfx_" & LCase(show) & "prod@base-fx.com,subject=[" & show & "] EOD Report " _
& prjDate & ",body=" & Chr(39) & "Hi " & UCase(show) & "ers,<br><br>Today's end of day report is attached.<br>" & _
"Any questions let me know.<br><br>Edi " & Chr(39) & ",attachment=" & Chr(39) & reportPath & Chr(39), windowStyle, waitOnReturn
希望有所帮助:)
答案 1 :(得分:0)
编写适当的程序。您无法使用mailto发送附件。该标准仅允许一个参数(尽管每个人都接受许多参数)。
Set emailObj = CreateObject("CDO.Message")
emailObj.From = "dc@gmail.com"
emailObj.To = "dc@gmail.com"
emailObj.Subject = "Test CDO"
emailObj.TextBody = "Test CDO"
emailObj.AddAttachment "C:/Users/User/Desktop/err.fff"
Set emailConfig = emailObj.Configuration
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "dc"
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Password1"
emailConfig.Fields.Update
emailObj.Send
If err.number = 0 then
Msgbox "Done"
Else
Msgbox err.number & " " & err.description
err.clear
End If