Je cherche l'exemple le plus complet de barebones, pour lancer Outlook 2007 avec un nouveau message démarré via C# .NET (il se trouve que j'utilise VS2008 .NET 3.0)Démarrage d'un nouveau message Outlook 2007 à partir de C# .NET
Voici ce que je suis en train:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Interop.Outlook;
namespace CreateMessage {
class Program {
static void Main (string[] args) {
// Create outlook application object.
var outlookApplication = new Microsoft.Office.Interop.Outlook.Application();
// Create mail message.
var newMail = (Microsoft.Office.Interop.Outlook.MailItem)outlookApplication.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
newMail.To = "[email protected]";
newMail.Subject = "Example";
newMail.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML;
newMail.HTMLBody = "<p>Dear Example,</p><p>Example example.</p>";
newMail.Display(false);
}
}
}
Voici mon projet refereces:
alt text http://img4.imageshack.us/img4/9350/referencesi.jpg
Voici l'exception intermittente je reçois (Environ la moitié du temps, je lance le programme):
System.Runtime.InteropServices.COMException was unhandled Message="The message filter indicated that the application is busy. (Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))" Source="Interop.Microsoft.Office.Interop.Outlook" ErrorCode=-2147417846 StackTrace: at Microsoft.Office.Interop.Outlook._MailItem.set_To(String To) at CreateMessage.Program.Main(String[] args) in C:\Users\Adam\Projects\GGS\CreateMessage\Program.cs:line 17 at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() InnerException:
Note: Je l'ai trouvé beaucoup de réponses et des exemples sur le travail avec Outlook via Interop, mais la plupart des réponses ne montre pas les déclarations en utilisant ou essaient de faire les choses au niveau suivant pour ce que je suis en train de photographier. J'essaie juste d'ouvrir Outlook, avec un nouveau message lancé, et peut-être un peu d'informations (Sujet, To, etc). Copier et coller n'importe lequel des exemples que j'ai trouvés jusqu'à maintenant ne compile pas parce qu'ils sont des extraits plutôt qu'un exemple de barebones pleinement fonctionnels qui compile.
merci!
Merci Michael. J'ai ajouté la "Bibliothèque d'objets Microsoft Outlook 12.0", mais je reçois toujours le même message d'erreur de compilation: "Le type ou le nom d'espace de nommage 'Outlook' est introuvable (une directive using ou une référence d'assembly est-elle manquante?)" –
Well Je suppose de vos modifications que vous avez résolu le problème de compilation ... comme pour votre question, quand je crée un nouveau projet C# avec votre code (tout ce que j'ai fait était couper/coller) cela fonctionne très bien ... l'application charge et derrière il ouvre un email Outlook avec les paramètres spécifiés. Peut-être devriez-vous essayer de recommencer, au cas où vous feriez des erreurs dans vos tentatives précédentes. –
Merci pour votre aide Michael. J'avais la référence Interop, mais l'utilisation de l'espace de noms complet a dépassé mon erreur initiale. Le problème que je frappe maintenant est l'exception montrée dans ma question mise à jour. Le nouveau message semble démarrer avant que Outlook ne soit prêt et déclenche une exception "application busy". (Cela se produit seulement la moitié du temps, l'autre moitié du temps, l'échantillon s'exécute avec succès et le courrier est généré.) –