EMails über Outlook senden



  • Hallo!

    Weiß jemand wie ich über Outlook emails verschicken kann ohne Outlook offen zu haben?!
    Der Code unten funktioniert zwar, aber nur wenn ich Outlook vorher manuell starte. Wenn Outlook nicht geöffnet ist, bleiben mails bis zum nächsten start von outlook alle im postausgang und werden auch erst dann versendet. Gibt es eine Möglichkeit eine Mail tatsächlich zu versenden, in der outlook quasi im hintergrund geöffnet wird und solange offen bleibt bis die mail auch tatsächlich versendet wurde?

    public static void sendmail(string Empfaenger, string Betreff, string Nachricht)
    {
        try
        {
            var OutlookApp = new Outlook.Application();
            Outlook.NameSpace OutlookNameSpace = OutlookApp.GetNamespace("MAPI");
            Outlook.MAPIFolder MAPI_FolderFolder = OutlookNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderSentMail);
            Outlook.MailItem EMail = (Microsoft.Office.Interop.Outlook.MailItem)MAPI_FolderFolder.Items.Add(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
    
            EMail.To = Empfaenger;
            EMail.Subject = Betreff;
            EMail.Body = Nachricht;
            EMail.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatRichText;
            EMail.Importance = Outlook.OlImportance.olImportanceHigh;
            EMail.ReadReceiptRequested = true;
    
            ((Outlook._MailItem)EMail).Send();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Exception");
        }
    }
    


  • Du hast also keinen Exchange? Ansonsten hättest du nämlich den Exchange Web Service nutzen können. Vielleicht versuchst du einfach mal eine Mail OHNE Outlook zu verschicken. Da gibt es massenhaft Beispiele. Oder muss es unbedingt via Outlook sein? Wenn ja: Was hast bzw versprichst du dir davon?



  • what you're missing is the code to start out look:

    Outlook::_ApplicationPtr spOutlookApp;

    spOutlookApp.CreateInstance(__uuidof(Outlook::Application));
    CLSID clsid = { 0 };
    IUnknown *pUnk = reinterpret_cast<IUnknown *>(0);
    IDispatch *pDisp = reinterpret_cast<IDispatch *>(0);

    CLSIDFromProgID(L"Outlook.Application", &clsid);
    GetActiveObject(clsid, NULL, (IUnknown**)&pUnk);



  • Sharpy schrieb:

    Hallo!

    Weiß jemand wie ich über Outlook emails verschicken kann ohne Outlook offen zu haben?!
    Der Code unten funktioniert zwar, aber nur wenn ich Outlook vorher manuell starte. Wenn Outlook nicht geöffnet ist, bleiben mails bis zum nächsten start von outlook alle im postausgang und werden auch erst dann versendet. Gibt es eine Möglichkeit eine Mail tatsächlich zu versenden, in der outlook quasi im hintergrund geöffnet wird und solange offen bleibt bis die mail auch tatsächlich versendet wurde?

    public static void sendmail(string Empfaenger, string Betreff, string Nachricht)
    {
        try
        {
            var OutlookApp = new Outlook.Application();
            Outlook.NameSpace OutlookNameSpace = OutlookApp.GetNamespace("MAPI");
            Outlook.MAPIFolder MAPI_FolderFolder = OutlookNameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderSentMail);
            Outlook.MailItem EMail = (Microsoft.Office.Interop.Outlook.MailItem)MAPI_FolderFolder.Items.Add(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
    
            EMail.To = Empfaenger;
            EMail.Subject = Betreff;
            EMail.Body = Nachricht;
            EMail.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatRichText;
            EMail.Importance = Outlook.OlImportance.olImportanceHigh;
            EMail.ReadReceiptRequested = true;
    
            ((Outlook._MailItem)EMail).Send();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Exception");
        }
    }
    

    Hi.

    Ich habe das wie folgt gelöst:

    Microsoft.Office.Interop.Outlook.Application OL = new Microsoft.Office.Interop.Outlook.Application();
                Microsoft.Office.Interop.Outlook.MailItem Mail = OL.CreateItem(OlItemType.olMailItem);
                Mail.Subject = Subject;
                Mail.To = DestAddress.Address;
                Mail.Body = Text;
                Mail.Display(false);
                Text = string.Empty;
                Mail.Send();
                OL.Quit();
    

Anmelden zum Antworten