Email mit !C! senden, über SMTP Server
-
Hallo @ll,
ja bei der Suchfunktion findet man viel, abermyMail.connect(...); myMail.send(...);
bringt mir nichts
Dann kam ein Code den ich zum Testen übernommen hbae, und nur die Emailadressen vertauscht habe:
//INTERNET #include <windows.h> #include <mapi.h> #include <tchar.h> #include <stdio.h> #define NUM_ELEMENTS(x) (sizeof((x)) / sizeof((x)[0])) int main(void) { LPMAPISENDMAIL pfnSendMail; MapiRecipDesc rdOriginator; MapiRecipDesc rdRecipient[1]; LPMAPILOGOFF pfnLogoff; LPMAPILOGON pfnLogon; MapiMessage mapimsg; HINSTANCE hDll; LHANDLE lHnd; int ret; if(NULL == (hDll = LoadLibrary(TEXT("MAPI32.DLL")))) { _tprintf(TEXT("could not load mapi32.dll, ErrorCode: %u"), GetLastError()); return(0); } pfnLogon = (LPMAPILOGON) GetProcAddress(hDll, "MAPILogon"); pfnLogoff = (LPMAPILOGOFF) GetProcAddress(hDll, "MAPILogoff"); pfnSendMail = (LPMAPISENDMAIL)GetProcAddress(hDll, "MAPISendMail"); ret = pfnLogon(0, NULL, NULL, 0, 0, &lHnd); if( ret ) printf( "\npfnLogon<%d>\n", ret ); mapimsg.ulReserved = 0; mapimsg.lpszSubject = "This is the subject"; mapimsg.lpszNoteText = "This is the message"; mapimsg.lpszMessageType = NULL; mapimsg.lpszDateReceived = NULL; mapimsg.lpszConversationID = NULL; mapimsg.flFlags = 0; mapimsg.lpOriginator = &rdOriginator; mapimsg.nRecipCount = NUM_ELEMENTS(rdRecipient); mapimsg.lpRecips = rdRecipient; mapimsg.nFileCount = 0; mapimsg.lpFiles = NULL; rdOriginator.ulReserved = 0; rdOriginator.ulRecipClass = MAPI_ORIG; rdOriginator.lpszName = "adr"; rdOriginator.lpszAddress = "SMTP:adr"; rdOriginator.ulEIDSize = 0; rdOriginator.lpEntryID = NULL; rdRecipient[0].ulReserved = 0; rdRecipient[0].ulRecipClass = MAPI_TO; rdRecipient[0].lpszName = "ard"; rdRecipient[0].lpszAddress = "SMTP:adr"; rdRecipient[0].ulEIDSize = 0; rdRecipient[0].lpEntryID = NULL; ret = pfnSendMail(lHnd, 0, &mapimsg, 0, 0); if( ret ) printf( "\npfnSendMail<%d>\n", ret ); ret = pfnLogoff(lHnd, 0, 0, 0); if( ret ) printf( "\npfnLogoff<%d>\n", ret ); FreeLibrary(hDll); system("pause"); return(0); }
Das geht ganz gut, er sagt zwar dass die email den adressaten nicht erreichenk ann, aber er sagt was.
Ich muss das Programm aber als Admin laufen lassen (email ist nur rand funktion) und dann sagt die Sendmail funktion "Fail_Login" oder so(weiß den genauen wortlaut nich[ist funktionsreturnwert 3
]).
Jetzt liegt das wohl daran, das ich über einen speziellen SMTP Server gehen soll laso "mail.sonstwo.sonstwas" wo kannich das einstellen?Bin ich auf dem richtigen Pfad?
-
wahrscheinlich musste 'mapilogon' mit den richtigen parametern aufrufen.
aber frag besser im winapi-forum.
-
Ja gut ich war mir nicht sicher in welchem Forumsabteil ich posten soll.
Kann wer das Thread verschieben?
@smtp-freak:
MAPILogon hat soweit ich das verstanden habe nicht keine Möglichkeit?!
-
lippoliv schrieb:
@smtp-freak:
MAPILogon hat soweit ich das verstanden habe nicht keine Möglichkeit?!wieso? guck dir doch den link an, password, profile-name usw. ist das nichts?
-
Genau. Das ist nichts.
Ich will auf z.B. mail.gmx.de connecten, wo stelle ich das ein?
-
In deinem Email-Programm
-
Dann brauche ich eine andere Möglichkeit.
Ich möchte gerne unabhängig von allem (ausser von Windows halt) eine Email senden, dass msus uach ohne Outlook oder Thunderbird gehen.
Wie kann ich dass so machen? Gibt es ein Tutorial?
Also bitte nicht C++, dort kann ich beim besten willen nicht umschreiben
-
Hat noch niemand so etwas gemacht?
Soll ich in WinAPI nochmal ein Thread erstellen oder zieht das wer um?Fragen über fragen *g
Also wie ich das verstanden habe ist das ja so:
Über diese MAPI Funktionen kann ich nur auf das Senden was in meinem Emailprogramm eingestellt ist.
Was ich will: über das Inet, von quasi keinem Konto auf mail.irgendwas.sonstwas senden, oder halt über Daten die man einmalig in "Systemsteuerung->Mail->Profile" einträgt.
Nun kann man irgendwie bei dieser Struktur ja auch sagen Profilname, aber irgendwie funktioniert das auch nicht!?
Ich habe einfach malret = pfnLogon(0, "SyD\0", NULL, MAPI_LOGON_UI, 0, &lHnd);
sowas gemacht, sogar noch mit \0 aber das Profil gibt es nicht, auch dann kann er das nicht machen, also kriegt er keinen "profil-nicht-gefunden" fehler?
[eidt]BITTE NICHT MEHR POSTEN HABE IN WINAPI NEUES THREAD AUFGEMACHT