2016-08-03 2 views
0

コンソールアプリケーションとして実行しているときにOutlook.mailを使用してメールを送信できます。
ただし、ウィンドウサービスでは何も起こりませんでした。 Outlookの送信ボックスにメールがありません。受信者は電子メールを受信しませんでした。
例外はスローされません。
コードは次のとおりです。C#Outlook interopを使用すると、ウィンドウサービスとして実行するとOutlook.mailがメールを送信できない

public void sendEncryptNsign2(String[] recipients, String[] ccs) 
    { 
     Outlook.MailItem mail = outlookApp.CreateItem(

     Outlook.OlItemType.olMailItem) as Outlook.MailItem; 

     mail.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x6E010003", 0x3); 

     //Recipients recips = mail.Recipients; 


     for (int ii = 0; ii < recipients.Length; ii++) 
     { 
      Outlook.Recipient recipTo = mail.Recipients.Add(recipients[ii]); 
      recipTo.Type = (int)Outlook.OlMailRecipientType.olTo; 
      recipTo.Resolve(); 
     } 


     for (int ii = 0; ii < ccs.Length; ii++) 
     { 
      Outlook.Recipient recipCc = mail.Recipients.Add(ccs[ii]); 
      recipCc.Type = (int)Outlook.OlMailRecipientType.olCC; 
      recipCc.Resolve(); 
     } 

     // mail.Recipients.ResolveAll(); 

     mail.Subject = "encrypt and signed using tag3"; 
     mail.HTMLBody = "<b>Happy day ?</b><br>tag8 using recipTo.Resolve() recipCc.Resolve(); "; 


     Library.WriteErrorLog(Library.logfile, "sendEncryptNsign2 calling mail.Send();"); 

     mail.Send(); 

     Library.WriteErrorLog(Library.logfile, "sendEncryptNsign2 after calling mail.Send();"); 

    } 

助けてください。 (ただ、他のOfficeアプリなど)

おかげ

+0

あなたはOutlookを正常に実行したと確信していますか?サービスはどのようなアカウントで実行されましたか? – BugFinder

答えて

2

Outlookオブジェクトモデルは、サービスで使用することはできません。オプションは、直接SMTP、EWS(Exchangeの場合)、Extended MAPI(C++またはDelphiのみ)またはRedemption(拡張MAPIラッパー、任意の言語)です。

+0

こんにちはドミトリー、情報ありがとう。 mail.PropertyAccessor.SetProperty( "http://schemas.microsoft.com/mapi/proptag/0x6E010003"、0x3)を使用して暗号化して署名できるので、Outlook.Mailを使用しています。明示的に受信者の公開鍵を見つけることなく。別の方法は、受信者が証明書をGALにアップロードすることです。 [リンク] http://stackoverflow.com/questions/38395266/c-sharp-get-exchange-user-certificate-from-gal-using-outlook-interopを参照してください。しかし、私のクライアントはこのアプローチに反対しています。なにか提案を ? – user1121055

+0

この場合はあまりお手伝いできません。ユーザーとして実行されているプロセスからOOMを使用するか、自分で暗号化を処理します。 –

関連する問題