2013-05-31 364 views
1

我有以下代码发送Outlook邮件。但是,当前景关闭时,这不起作用。
Sub DraftMail(emailAddr, strBody, strSub)
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = GetObject(, "Outlook.Application")
If OutApp Is Nothing Then
Set OutApp = CreateObject("Outlook.Application")
End If Set OutMail = OutApp.CreateItem(0)
从excel发送outlook邮件vba

On Error Resume Next 
With OutMail 
    .To = "" 
    .CC = "" 
    .BCC = emailAddr 
    .Subject = strSub 
    .HTMLBody = strBody 
    .Send 'or use .Display 
    .ReadReceiptRequested = True 
End With 
On Error GoTo 0 

Set OutMail = Nothing 
Set OutApp = Nothing 

End Sub

任何人可以帮助我如何使它甚至工作时的前景被关闭?

回答

0

试试这个代码: (未测试)

Sub SendMail() 

    Dim iMsg As Object 
    Dim iConf As Object 
    Dim Flds As Variant 


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

    iConf.Load -1 
    Set Flds = iConf.Fields 

    With Flds 
     .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "<server>" 
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
     .Update 
    End With 

    With iMsg 

     Set .Configuration = iConf 
     .To = "[email protected]" 
     .From = "[email protected]" 
     .Subject = "MIS Reports" & " " & Date & " " & Time 
     .TextBody = "Link to Currency Data :" & vbNewLine & "<" & myDest & ">" 
     .Send 
    End With 

    Set iMsg = Nothing 
    Set iConf = Nothing 

End Sub 
+0

桑托斯感谢您的答复。 但我只需要通过Outlook发送邮件。 您能否修改我的代码以使其工作 – Tjs

+0

@Tjs您需要输入服务器详细信息,更改为,从电子邮件ID&希望它应该工作,即使对于Outlook。 – Santosh

0

首先你有任何错误在那里处理?例如,如果你调用getObject并关闭它,你应该得到一个错误?

所以大多数人使用的方式是调用get对象,如果那个错误,那么他们知道outlook关闭,他们创建一个新的实例。

如果你想成为非常精确的错误代码号为429在这里看到,例如验证码Link to previous question.

为了让您一开始,这也应该工作

On Error Resume Next 

Set OutApp = GetObject(, "Outlook.Application") 
If OutApp Is Nothing Then 
    Set OutApp = CreateObject("Outlook.Application") 
End If 

一旦这方面的工作,那么你可以删除“On Error Resume Next”,并捕获特定错误429(如果需要),然后您知道该错误是因为Outlook未运行。

0

最简单的做法是构建一个mailto://网址并通过shell command运行它。

您必须为URL encode标题和正文才能正常显示。

例如(粘贴在运行命令在Windows中):

mailto://[email protected]?subject=New%20Email&body=This%20is%20the%20message%20body.

Result

相关问题