2011-12-02 77 views
1

我們正在將某些電子郵件從Exchange Server的特定收件箱保存到某種跟蹤系統。用戶使用瀏覽器查看此跟蹤系統。從網站打開現有電子郵件的Outlook

我現在要做的是在網頁上生成一個鏈接,當然在客戶端上打開Outlook 2010中的現有電子郵件。

要生成此鏈接,我有電子郵件/項目的所有必要信息(使用Microsoft.Exchange.WebServices)。

那麼該怎麼做?

確定我到目前爲止: 將ewsId(交換服務器上的郵件的ID)從交換服務器轉換爲outlook的entryid。這是通過使用EWS的ConvertId方法完成的。

現在我遇到了問題,當我嘗試使用outlook加載郵件時,出現錯誤「元素無法打開,請重試」。

回答

1

好,我找到了解決辦法的發佈我的代碼在這裏:

在服務器端(C#與Exchange Web服務):

private static String GetOutlookEntryId(EmailMessage message, ExchangeService esb) { 
     AlternateId ewsId = new AlternateId(IdFormat.EwsId, message.Id.ToString(), "[email protected]"); 
     AlternateIdBase entryId = esb.ConvertId(ewsId, IdFormat.EntryId); 
     return Base64StringToHexString(((AlternateId)entryId).UniqueId); 
    } 

    public static String Base64StringToHexString(String base64String) { 
     byte[] bytes = System.Convert.FromBase64String(base64String); 

     StringBuilder sbHexString = new StringBuilder(); 
     for(int i = 0; i < bytes.Length; i++) { 
      sbHexString.Append(bytes[i].ToString("X2")); 
     } 
     return sbHexString.ToString(); 
    } 

在客戶端(Internet Explorer,Outlook安裝,vbscript):

<script language="vbscript"> 
sub openMailInOutlook 
    mailID = "the entry id converted from exchange id on the server side" 

    set olApp = createobject("Outlook.Application") 

    set session = olApp.Session 
    set originalMailItem = session.GetItemFromID(mailID) 

    originalMailItem.Display 

    set olNs = Nothing 
    set olApp = Nothing 
end sub 

+0

這真是太棒了! –

1

嗨,我認爲這將有助於U

基本上有三種方法來做到這一點。

  • 使用mailto打開Outlook應用程序
  • 採用傳統的SMTP發送郵件
  • 使用Outlook對象庫與添加的附件作爲應用程序的一個組成部分沿打開Outlook。

使用mailto鏈接

<A href=」mailto:[email protected] 
     ?Cc:[email protected] 
     &Subject:Using Mailto to send mails&Body:this is a test」>. 

這是做這件事的俗氣的方式。將屬性和郵件一起發送到

但是,如果您想在VB.Net LinkLabel中使用此功能。你可以這樣來做

Dim strURL as String strURL = 「mailto:[email protected] 
           ?Cc:[email protected] 
           &Subject:Using Mailto to send mails&Body:this is a test」 
Process.Start(strURL) 

使用SMTP發送郵件

你開始編碼確保您導入相關的命名空間

Imports System.Web.Mail 

這裏之前那張代碼

Public Function SMTPCall() 
    Dim strTo As String 
    Dim strFrom As String 
    Dim strBody As String 
    Dim strSubject As String 
    strTo = "[email protected]" 

    'Make sure you set the from address, 
    'some SMTP servers wouldn't send a mail without the FROM address 
    strFrom = "[email protected]" ` 
    strBody = "Test on Sending Mail"` 
    strSubject = "Did this mail reach you yet?" ` 
    SmtpMail.Send(strFrom, strTo, strSubject, strBody) ` 
End Function` 

看起來不錯,但與abov的限制兩種方法是你不能發送附件。如果用戶想要訪問Outlook通訊簿併發送附件,該怎麼辦?

使用MSOutlook對象庫

下面是使用MS Outlook對象庫,具有VB.Net Outlook集成一小塊代碼。

  • 首先實例化Outlook應用程序對象。
  • 確保您在「項目參考」中添加參考。
  • 右鍵單擊解決方案資源管理器中的引用。添加「Microsoft Outlook 10.0對象庫」。

    公共功能OutlookCall() 「取的Outlook應用 昏暗oOutlook作爲新Outlook.Application()

    'Create an instance of the MailItem 
    Dim oMailitem As Outlook.MailItem` 
    
    'Create an instance of the Attachment 
    Dim oAttach As Outlook.Attachment 
    oMailitem = oOutlook.CreateItem(Outlook.OlItemType.olMailItem) 
    oMailitem.To = 「[email protected]」 
    oMailitem.Cc = 「[email protected]」 
    oMailitem.Subject = "Email Integration with Outlook and VB.Net" 
    
    'txtFilepath is a text box that contains the path for attachment. 
    If (txtFilepath.Text = "") Then 
        MsgBox ("You did not attach a file") 
    Else 
        'Attach the file Path to the Mail Item 
        oMailitem.Attachments.Add(txtFilepath.Text) 
    End If 
    
    'PING….Displays the Outlook along with the To,Cc,Subject and Attachment 
    oMailitem.Display() 
    

    端功能的一個實例

有很多其他的您可以使用此Outlook對象執行的功能。希望這可以幫助。

注:

  • Microsoft Outlook中應安裝在機器上。
  • 將Microsoft Outlook假定爲默認郵件客戶端應用程序。
  • 如果Outlook發送項目的現有實例已在運行,它仍然會創建新的郵件消息。

這VL幫助ü

+0

我的問題是,我有一個現有的電子郵件,我想用Outlook打開它。那麼如何通過使用Microsoft Outlook 10.0對象庫來獲取該電子郵件? – ulluoink

相關問題