2017-04-04 5 views
1

befestigen ich versuche, für Office 2010Kann nicht das Objekt finden, wenn MailItem

Outlook.Application app = new Outlook.Application(); 
Outlook.MailItem SelectedMessage = (Outlook.MailItem)app.ActiveExplorer().Selection[1]; 
Outlook.MailItem newmail = app.CreateItem(Outlook.OlItemType.olMailItem) as Outlook.MailItem; 

newmail.Subject = SelectedMessage.SenderEmailAddress + " - " + SelectedMessage.Subject; 
newmail.To = SenderEmailVar; 

newmail.Body += "Subject : " + SelectedMessage.Subject; 
newmail.Body += "Received by : " + SelectedMessage.SendUsingAccount.SmtpAddress; 
newmail.Body += "Sent by : " + SelectedMessage.SenderEmailAddress + "\n\n"; 

MessageBox.Show(SelectedMessage.Body); 
newmail.Attachments.Add(SelectedMessage); 
newmail.Send(); 

Aber ich habe eine Ausnahme eine kleine Anwendung auf C# zu Visual Studio 2017 Ich schreibe:

Kann nicht das Objekt finden

Sorry, es ist auf Französisch (ich habe versucht, es zu übersetzen).

System.Runtime.InteropServices.COMException aufgetreten. HResult = 0x8004010F Meldung = Vorgang fehlgeschlagen. Das Objekt konnte nicht gefunden werden. Source = Microsoft Outlook Verfahrensaufrufbaum: Kann den Prozeduraufruf Baum der Ausnahme

Es ist auf der newmail.Attachments.Add(SelectedMessage); Linie tritt bewerten.

Ich kann die SelectedMessage.Subject, SelectedMessage.Body gut haben, so dass meine Auswahl nicht leer ist.

MessageBox funktioniert gut, und Körper & Thema der neuen Nachricht enthalten das Thema, Absender, etc ... So scheint die Auswahl zu arbeiten. Aber die Quell-E-Mail ist nicht angehängt.

Was ist los?

Grüße

+0

Hallo, können Sie die vollständige Ausnahme Details und die Zeilennummer, wo es auftritt, buchen? – Stefan

+0

Was ist 'SelectedMessage'? –

+0

@ BarryO'Kane: Ich denke, es ist "Outlook.MailItem SelectedMessage = (Outlook.MailItem) app.ActiveExplorer(). Auswahl [1];' – Stefan

Antwort

0

Finden eine Abhilfe:

Zuerst speichern ich die Nachricht lokal auf dem Datenträger

Dann befestigen diese MSG auf die aktuelle E-Mail-Datei.

Und löschen Sie die E-Mail von der Festplatte.

SelectedMessage.SaveAs(Path.GetTempPath() + "cmail.msg"); 
newmail.Attachments.Add(Path.GetTempPath() + "cmail.msg"); 
File.Delete(Path.GetTempPath() + "cmail.msg"); 

Wahrscheinlich nicht die beste, aber funktioniert gut. Wenn jemand besser sein kann, suche ich :)