2016-07-13 7 views
0

전자 메일을 보내는 일부 코드가 있습니다. 기본 메시지를 작성한 후 사용자가 수정할 수 있습니다. 내가하고 싶은 것은 보내지는 메시지를 보관하지만 추가 될 수있는 수신자를 보관하는 것입니다. 문제는 사용자가 메일 객체 보내기를 클릭하면 null로 설정되는 것입니다.Outlook 메시지 본문을 가져 오는 방법

Public Shared Function SendRFQ(ByVal strRFQID As String, ByVal strTo As String, ByRef EmailSent As Structs.Email) As Boolean 

    Dim bRC As Boolean 
    Dim objOutlook As Outlook.Application 
    Dim objEmail As Outlook.MailItem 

    objOutlook = CType(CreateObject("Outlook.Application"), Outlook.Application) 
    objEmail = CType(objOutlook.CreateItem(Outlook.OlItemType.olMailItem), Outlook.MailItem) 

    With objEmail 
     .CC = "[email protected]" 
     .Subject = String.Format("RFQ") 
     .To = strTo 
     .Body = Constants.RFQ.Email.Body 
     .Display(True) 
    End With 

    'objEmail is null 
    EmailSent.To = objEmail.To 
    EmailSent.Subject = objEmail.Subject 
    EmailSent.Body = objEmail.Body 

End Function 

COM 예외가 발생합니다. "항목이 이동되었거나 삭제되었습니다."

이 작업을 수행 할 수있는 방법이 있습니까?

Dim cc = "[email protected]" 
Dim subject = String.Format("RFQ") 
Dim body = Constants.RFQ.Email.Body 
With objEmail 
    .CC = cc 
    .Subject = subject 
    .To = strTo 
    .Body = body 
    .Display(True) 
End With 

EmailSent.To = strTo 
EmailSent.Subject = subject 
EmailSent.Body = body 
+0

'EmailSent'를 채우기 전까지는 '표시'를 호출하지 마십시오. –

+0

표시는 사용자가 메시지를 사용자 정의 할 수있게합니다. EmailSent를 먼저 채우는 경우 변경 사항이 없습니다. –

답변

1

당신은 MailItemSendevent를 사용하여이 작업을 수행 할 수 있습니다 :

+0

또는 Application.ItemSend 이벤트를 사용할 수 있습니다. –

+0

짐 감사합니다! 완벽하게 작동합니다! –

0

당신은 이메일의 내용의 값을 유지하고하는 ByRef 개체를 채울 필요가있다. 다음 Console 응용 프로그램에서는 방법을 보여줍니다. 당신은 당신의 필요에 적응할 수 있어야합니다.

Imports Microsoft.Office.Interop 

Module Module1 

    Private WithEvents objEmail As Outlook.MailItem 

    Sub Main() 

     Dim objOutlook As Outlook.Application 

     objOutlook = CType(CreateObject("Outlook.Application"), Outlook.Application) 
     objEmail = CType(objOutlook.CreateItem(Outlook.OlItemType.olMailItem), Outlook.MailItem) 

     With objEmail 
      .CC = "[email protected]" 
      .Subject = "Subject" 
      .To = "[email protected]" 
      .Body = "Body" 
      .Display(True) 
     End With 

     objOutlook = Nothing 

    End Sub 

    Private Sub objEmail_Send(ByRef Cancel As Boolean) Handles objEmail.Send 
     Console.WriteLine(objEmail.Body) 
     Console.WriteLine(objEmail.To) 
     Console.WriteLine(objEmail.Subject) 
    End Sub 
End Module 
+0

사용자가 변경 한 내용을 추적하지 않습니다. –

관련 문제