2016-11-03 1 views
1

Nous avons une application Windows vb.net qui crée une instance de Outlook.Application pour ouvrir un fichier .MSG de courrier électronique, et enregistrez-le en .HTML en appelant la méthode Outlook.Application SaveAs().Dans vb.net lorsque vous appelez une méthode à partir d'une instance de Outlook.Application, une fenêtre contextuelle arrête l'exécution du code

Cependant, parfois l'appel à .SaveAs() provoque l'apparition d'une fenêtre contextuelle, par exemple lors de l'enregistrement d'un fichier .MSG signé numériquement, il existe une fenêtre contextuelle de confirmation. Cette fenêtre provoque l'arrêt de l'exécution du code jusqu'à ce que l'utilisateur interagisse et clique sur OUI ou sur NON dans la fenêtre contextuelle. Comme notre application fonctionne sur un serveur et ne nécessite aucune interaction de l'utilisateur, l'application s'arrête périodiquement jusqu'à ce qu'un technicien se connecte au serveur et clique sur «oui» dans la fenêtre contextuelle.

Y a-t-il un moyen d'éviter cette fenêtre, ou avez-vous sélectionné OUI automatiquement? J'ai essayé d'étudier la documentation pour Outlook.Application mais, bien sûr, la documentation manque beaucoup sur MSDN.

Voici quelques exemples de code vb.net:

outlookapp = CreateObject("Outlook.Application") 
Dim olItem As Object = outlookapp.CreateItemFromTemplate("C:\msg\message.msg") 
olItem.SaveAs("C:\html\convertedmessage.html", 5) 

Si message.msg est signé numériquement, lors de l'appel SaveAs() pour l'enregistrer dans un fichier HTML, vous obtenez un pop-up que le MSG est signé numériquement, cela interrompt le code jusqu'à ce que vous cliquiez sur oui ou non.

Remarque: Les objets Outlook ne prennent pas en charge le drapeau DisplayAlerts des objets Word.

+0

double possible de [Comment désactiver les popups quand openning dans le bureau-Interop] (http://stackoverflow.com/questions/5575117/how-to-disable-popups-when-openning-in-office- interop) –

+0

Il ne s'agit pas d'un doublon car ce post concerne Word qui prend en charge la définition de 'DisplayAlerts' sur false. Cette question est pour Outlook, qui n'a pas cette méthode. – evolvedant

+0

Je pense, il est tout de même pour toutes les applications de bureau - 'Application.DisplayAlerts = False' –

Répondre

0

Premièrement, Outlook n'est pas conçu pour être utilisé dans un service ou une application côté serveur sans utilisateur présent.

Dans votre cas, vous pouvez faire ce qui suit: pour ouvrir le fichier MSG

1 Utiliser MAPI étendu (C++ ou Delphi uniquement) (OpenIMsgOnIStg etc.), puis construire le fichier HTML explicitement dans votre code.

2 Analyser le fichier MSG (son format est documented) ou utiliser un des composants commerciaux (tel que celui de Aspose) pour lire les fichiers MSG.

3 Utilisez Redemption et son RDOSession. /RDOMail. SaveAs(..., olHTML) méthodes pour ouvrir le fichier MSG et effectuer la conversion.

dim Session As RDOSession = CreateObject("Redemption.RDOSession") 
dim Msg As RDOMail = Session.GetMessageFromMsgFile("C:\msg\message.msg") 
Msg.SaveAs("C:\html\convertedmessage.html", 5)