Frage

Ich habe das geschrieben wenig MS Outlook 2003 VSTO Add-In mit C # und Visual Studio 2008. Es soll jeder Postsendung prüfen, für das Wort gesendet werden „anhängen“ im Körper und gefunden, wenn, dann überprüfen Sie die Nummer die Anlagen. Wenn diese Zahl Null ist, dann fragen Sie den Benutzer, wenn sie wirklich die Nachricht senden bedeuten. Es soll an die Arbeit wie das Google Mail Labs-Funktion, die das gleiche tut.

Das Seltsame ist, dass es funktioniert, aber das erste Mal, dass ich es laufen, ich eine Pause bekommen, wie die Post-Fenster für etwa 45 Sekunden aufgehängt wird. Sobald es vorbei, dass bekommt, läuft es sehr schnell für den Rest der Zeit habe ich Outlook geöffnet haben. Wenn ich Outlook schließen aber dann ich das nächste Mal wieder öffnen und eine Nachricht senden, ich werde diese warten wieder.

Alle Ideen, Völker?

Hier ist der Code für meine Add-In:

namespace OutlookAttacher
{
    public partial class ThisAddIn
    {
        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            this.Application.ItemSend += new Outlook.ApplicationEvents_11_ItemSendEventHandler(Application_ItemSend);
        }

        private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
        {
        }

        void Application_ItemSend(object Item, ref bool Cancel)
        {
            if (Item is Microsoft.Office.Interop.Outlook.MailItem)
            {
                Microsoft.Office.Interop.Outlook.MailItem currentItem = Item as Microsoft.Office.Interop.Outlook.MailItem;
                Cancel = true;

                if (currentItem.Body.Contains("attach"))
                {
                    if (currentItem.Attachments.Count > 0)
                    {
                        Cancel = false;
                        //MessageBox.Show("This message will be sent now.");
                        currentItem.Send();
                    }
                    else
                    {
                        DialogResult ans = MessageBox.Show("This message has no attachments. Are you sure you want to send it?", "OutlookAttacher", MessageBoxButtons.YesNo);
                        if (ans.Equals(DialogResult.Yes))
                        {
                            Cancel = false;
                            //MessageBox.Show("This message will be sent now.");
                            currentItem.Send();
                        }
                    }
                }
                else
                {
                    Cancel = false;
                    //MessageBox.Show("This message will be sent now.");
                    currentItem.Send();
                }
            }
        }
    }
}

Haben Sie Vorschläge zur Verbesserung des Code sind willkommen auch, da dies mein erster Stich ist in einem Outlook-Add-In.

Update: Ich verwende diese auf einem 5-Jahres-Dell-Laptop, 2 GB Ram und ich-nicht-wissen-CPU, die Intel. Ich mag die Idee, eine Spur von Hinzufügen / Debugging es. Ich muß gehen herauszufinden, wie durch den Code zu dem Schritt, so kann ich sehen, wo es vielleicht die längste Zeit nehmen. Dank Sie!

War es hilfreich?

Lösung

OK, ich bin wirklich in Verlegenheit gebracht. Die Verzögerung ich sah war nur Outlook synching mit meinem Exchange-Server. Ich war zu Hause, als ich die Prüfung und Outlook wurde noch über HTTP zu verbinden. Ich sehe es heute schnell arbeiten, im Büro, so dass kein HTTP. Danke für die Antworten sowieso.

: -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top