Announcement

Collapse
No announcement yet.

MAPISendDocuments? Wie versendet man E.mails? BCB5St

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MAPISendDocuments? Wie versendet man E.mails? BCB5St

    Hi

    Ich muss E.mails mit Anlagen versenden können.
    Leider bin ich daran gescheitert. Ich bin zwar über
    MAPISendDocuments und so gestolpert habe aber keine
    Ahnung wie ich das denn wirklich verwenden soll.
    Kann mir einer kurz Nachhilfe geben. Hat jemand
    Programmbeispiele die mir weiterhelfen oder kennt jemand
    noch andere Möglichkeiten E.mails zu Senden.
    Ich verwende BCB5 Standart.

    Also Danke im Voraus

    Flo

  • #2
    ein Auschnitt aus einem Quelltext von mir, vielleicht hilfts.

    MapiMessage MapiMessage;<br>
    MapiFileDesc aFileDesc;<br>
    MapiRecipDesc aRecipDesc;<br>
    Cardinal MError;<br>

    char* pMailText( (char *) malloc( DlgMailSenden->Mailtext->Text.Length() + 1 ) );<br>
    strcpy( pMailText, DlgMailSenden->Mailtext->Text.c_str() );<br>

    MapiMessage.ulReserved = 0;<br>
    MapiMessage.lpszSubject = Titel;<br>
    MapiMessage.lpszNoteText = pMailText;<br>
    MapiMessage.lpszMessageType = NULL;<br>
    MapiMessage.lpszDateReceived = NULL;<br>
    MapiMessage.lpszConversationID = NULL;<br>
    MapiMessage.flFlags = 0;<br>
    MapiMessage.lpOriginator = NULL;<br>
    MapiMessage.nRecipCount = 1;<br>
    MapiMessage.lpRecips = &aRecipDesc;<br>
    MapiMessage.nFileCount = 1;<br>
    MapiMessage.lpFiles = &aFileDesc;<br>

    aFileDesc.ulReserved = 0;<br>
    aFileDesc.flFlags = 0; // MAPI_OLE,MAPI_OLE_STATIC;<br>
    aFileDesc.nPosition = -1;<br>
    aFileDesc.lpszPathName = aFileName;<br>
    aFileDesc.lpszFileName = NULL;<br>
    aFileDesc.lpFileType = NULL;<br>

    char Name[250];<br>
    char Adresse[250];<br>
    strncpy( Name, DlgMailSenden->eMailAdresse->Text.c_str(), sizeof( Name ) );<br>
    strncpy( Adresse, ( String( "SMTP:" ) + DlgMailSenden->eMailAdresse->Text ).c_str(), sizeof( Adresse ) );<br>

    aRecipDesc.ulReserved = 0;<br>
    aRecipDesc.ulRecipClass = MAPI_TO;<br>
    aRecipDesc.lpszName = Name;<br>
    aRecipDesc.lpszAddress = Adresse;<br>
    aRecipDesc.ulEIDSize = 0;<br>
    aRecipDesc.lpEntryID = NULL;<br>

    MError = MapiSendMail( 0, (ULONG) pDlg->Handle, MapiMessage, MAPI_DIALOG | MAPI_LOGON_UI/* | MAPI_NEW_SESSION*/, 0);<br>
    &#10

    Comment


    • #3
      Muss ich da noch Header einbinden?
      "Undefiniertes Symbol MapiMessage&quot

      Comment


      • #4
        #include <mapi.h>

        und vermutlich muß auch die mapi.lib oder mapi32.lib eingebunden werden. ( USELIB... ???
        Günther

        Comment


        • #5
          Oder einfach mal nach SMTP suchen, da gibt es viele Beiträge..
          Günther

          Comment


          • #6
            USELIB("mapi32.lib");
            USELIB("nmapi.lib");

            Andere gibts nicht und bei MAPISendMail erhalte ich den Linker Fehler:
            Unresolved external MAPISendMail referenced from "Projectpath"

            Was hat den mein Builder?

            Comment


            • #7
              USELIB("mapi32.lib");

              USELIB("nmapi.lib");

              ______________________

              #include "mapi.h"

              MapiMessage *Mapia;

              MapiFileDesc aFileDesc;

              MapiRecipDesc aRecipDesc;

              Cardinal MError;

              char* pMailText = new char[256];

              strcpy( pMailText, "Hallo das ist der Text" );

              Mapia->ulReserved = 0;

              Mapia->lpszSubject = "Titel";

              Mapia->lpszNoteText = pMailText;

              Mapia->lpszMessageType = NULL;

              Mapia->lpszDateReceived = NULL;

              Mapia->lpszConversationID = NULL;

              Mapia->flFlags = 0;

              Mapia->lpOriginator = NULL;

              Mapia->nRecipCount = 1;

              Mapia->lpRecips = &aRecipDesc;

              Mapia->nFileCount = 1;

              Mapia->lpFiles = &aFileDesc;

              aFileDesc.ulReserved = 0;

              aFileDesc.flFlags = 0; // MAPI_OLE,MAPI_OLE_STATIC;

              aFileDesc.nPosition = -1;

              aFileDesc.lpszPathName = "C:\\Bootlog.txt";

              aFileDesc.lpszFileName = NULL;

              aFileDesc.lpFileType = NULL;

              char Name[250];

              char Adresse[250];

              strncpy( Name, "Flo",4);

              strncpy( Adresse, ( String( "SMTP:" ) + "[email protected]" ).c_str(), sizeof( Adresse ) );

              aRecipDesc.ulReserved = 0;

              aRecipDesc.ulRecipClass = MAPI_TO;

              aRecipDesc.lpszName = Name;

              aRecipDesc.lpszAddress = Adresse;

              aRecipDesc.ulEIDSize = 0;

              aRecipDesc.lpEntryID = NULL;

              MError = MAPISendMail( 0, 0, Mapia, MAPI_DIALOG | MAPI_LOGON_UI/* | MAPI_NEW_SESSION*/, 0);

              Also das ist der leicht modifizierte Code mit dem ich testen wollte und letzten Linker Fehler erhalten habe. Ist daran was falsch? Fehlt noch eine Datei die ich mit einbinden muss? Ich habe schon sehr viel ausprobiet und sehr viel Zeit vergeudet. Und jeder Hinweis hilft mir weiter.

              MFG Flo

              PS: Sorry nicht mal nen normalen Zeilenumbruch krieg ich heute hi

              Comment


              • #8
                // das sind meine Includes (in der Reihenfolge)<br>
                #include "MAPI.hpp" // Extension hpp (Teil von CBuilder) <br> #include "Mapi.h" // Mapi.h ist Teil von Windows<br>

                MAPISendMail ist etwas anderes als MapiSendMail! MapiSendMail befindet sich in Mapi.hpp. Vielleicht liegt es daran

                Comment


                • #9
                  // bei mir sind zwei includes notwendig<br>
                  #include <Mapi.hpp> // CBuilder-Mapi<br>
                  #include <Mapi.h> // Windows-Deklarationen<br>

                  Funktion heißt MapiSendMail und nicht MAPISendMai

                  Comment


                  • #10
                    Sie haben recht das war wohl das Problem.
                    Das einzige Problem was ich jetzt noch habe ist das die E.mail nicht sofort gesendet wird. Ein Dialog zum öffnen des DFÜ-Netzwerkes erscheint nicht und auch wenn ich mich schon vorher bei meinem Provider eingeloggt habe findet sich die E.mail wieder im Outlook2000 Postenausgang. Wo liegt womöglich jetzt noch mein Problem?

                    MFG Fl

                    Comment


                    • #11
                      Da gibt es in Outlook noch eine Option "Nachrichten sofort senden&quot
                      Günther

                      Comment


                      • #12
                        Danke und kann ich diesen Eintrag vielleicht für den Zeitpunkt der übertragung in der Registry ändern

                        Comment


                        • #13
                          Das weis ich nicht. Warum kann die Einstellung nicht generell auf sofort gestellt werden ? Ist doch viel praktischer
                          Günther

                          Comment


                          • #14
                            Ich glaube die Option bei bestehender Verbindung E-Mails sofort übertragen bezieht sich nur auf Outlook zumindest nicht auf meine Anwendung? Ich habe diese Option auch geändert nur sollen ja auch noch andere User mit dem Programm arbeiten können die diese Option nicht gewählt haben. Könnte es noch sein das es daran liegt das keine Session angeben wird

                            Comment


                            • #15
                              kannst du mir mal ein fertiges mapi (mail senden)projekt schicken ?

                              danke

                              Comment

                              Working...
                              X