2013-12-11 67 views
4

我正在企業環境中使用內部使用Web應用程序,並且需要在用戶中生成一封電子郵件Outlook保留其簽名,以便他們可以修改if需要並自行發送。從IE瀏覽器的網站在html中使用html body打開新郵件

所有用戶都在IE8 +上,並且該網站是啓用了ActiveX對象的可信站點的一部分,所以我希望使用Outlook自動化來實現這一點。

以下是我的要求與現有問題區分的簡要總結。

  • 只需要支持IE8 +和Outlook
  • HTML正文格式支持
  • 附件支持
  • ,必須保留用戶配置的簽名

回答

13

這可以使用JavaScript來實現,即如果站點是受信任的站點並啓用ActiveX對象。我已經有這個腳本早在IE6下工作,並且測試了IE10,我不確定它在IE11中的支持。

關於以下腳本的一個重要問題是,在嘗試從中提取簽名或試圖設置它的簽名之前,您必須在電子郵件上調用Display否則您將失去簽名信息。

try { 

    //get outlook and create new email 
    var outlook = new ActiveXObject('Outlook.Application'); 
    var email = outlook.CreateItem(0); 

    //add some recipients 
    email.Recipients.Add('[email protected]').Type = 1; //1=To 
    email.Recipients.Add('[email protected]').Type = 2; //2=CC 

    //subject and attachments 
    email.Subject = 'A Subject'; 
    //email.Attachments.Add('URL_TO_FILE', 1); //1=Add by value so outlook downloads the file from the url 

    // display the email (this will make the signature load so it can be extracted) 
    email.Display(); 

    //use a regular expression to extract the html before and after the signature 
    var signatureExtractionExpression = new RegExp('/[^~]*(<BODY[^>]*>)([^~]*</BODY>)[^~]*/', 'i'); 
    signatureExtractionExpression.exec(email.HTMLBody); 
    var beforeSignature = RegExp.$1; 
    var signature = RegExp.$2; 

    //set the html body of the email 
    email.HTMLBody = beforeSignature + '<h1>Our Custom Body</h1>' + signature; 

} catch(ex) { 
    //something went wrong 
} 
+1

它也適用於我。我只需啓用'未標記爲安全的'初始化和腳本ActiveX控件'。選項在IE安全選項中。 – Yulian

+0

給出錯誤。 'Outlook not starts'如果outlook在點擊按鈕之前運行,它也會發生錯誤。 '兩個outlook的實例並沒有同時運行.'所以我不知道如何打開撰寫郵件窗口。 –

+0

哎呀,重啓IE然後錯誤消失了。謝謝。 –

相關問題