E-Mail versenden!

Andreas703

Mitglied
Also ich hab nun ein Source-Code zum versenden von E-Mails gefunden! Nur scheint es
a)Nicht zu funktionieren
b)lange zu dauern!

Falls es lange dauert hat es doch sicherlich mit
Code:
SetThreadPriority( hthr, THREAD_PRIORITY_TIME_CRITICAL);
zu tun oder?
Wenn ja was kann ich machen das es schneller ankommt?
 
Andreas703 hat gesagt.:
Also ich hab nun ein Source-Code zum versenden von E-Mails gefunden! Nur scheint es
a)Nicht zu funktionieren
b)lange zu dauern!

Falls es lange dauert hat es doch sicherlich mit
Code:
SetThreadPriority( hthr, THREAD_PRIORITY_TIME_CRITICAL);
zu tun oder?
Wenn ja was kann ich machen das es schneller ankommt?
Ich glaube nicht, dass die Thread-Priorität etwas damit zu tun hat, wie schnell die E-Mail ankommt.

Und wie konntest du feststellen, dass es lange dauert, wenn es ohnehin nicht funktioniert, wie du sagst? ;)
 
ich sagte a) es nich ODER b) es dauert nur lange!

Ich geb mal den ganzen Code her,wird aber etwas viel

Code:
#include <winsock2.h>
#include <stdio.h>
#include <iostream>
using namespace std;
#pragma comment(lib,"wsock32.lib") 

#define EOL  "\r\n"

DWORD smailid;
HANDLE hthr;
const WORD   VERSION_MAJOR  = 1;     
const WORD   VERSION_MINOR  = 1;
int error;
char pszBody[1500];

typedef struct threadd
{
    char name[200];
    char fromid[200];
    char toid[200];
    char serv[200];
    char sub[300];
    char mes[1000];
} TDATA;

void send(char *smtpservr, char *fromname, char *fromid, char *toid,
          char *subject, char *message);
void Check( int iStatus, char *szFunction );
DWORD WINAPI is_ok( LPVOID l);
int sendmail( LPVOID l);

int main()
{
  send("mail.web.de","andreas","1Avatar@sms.at","andreas.hoess@gmx.at",
       "dssd","asdsddads");
  getchar();
  return 0;
}

void send(char *smtpservr, char *fromname, char *fromid, char *toid, 
          char *subject, char *message)
{
   TDATA td;

  strcpy(td.fromid,fromid); 
  strcpy(td.name ,fromname); 
  strcpy(td.serv ,smtpservr); 
  strcpy(td.toid ,toid); 
  strcpy(td.sub ,subject); 
  strcpy(td.mes ,message);
  cout<<"Email an "<<toid<<" wird versendet . . ."<<endl;

  hthr=CreateThread(NULL,0,is_ok,(LPVOID)&td,CREATE_SUSPENDED,&smailid);   
  SetThreadPriority( hthr, THREAD_PRIORITY_TIME_CRITICAL);   
  ResumeThread(hthr);   
  WaitForSingleObject(hthr, INFINITE);
   
}

DWORD WINAPI is_ok( LPVOID l)
{
  TDATA *d=(TDATA *)l;
  if(sendmail(l)==0)
  cout<<"Versenden abgeschlossen"<<endl;
  else
  cout<<"Versenden gescheitert"<<endl;		
  return 0;
}


void Check( int iStatus, char *szFunction )
{   
  if (iStatus != SOCKET_ERROR && iStatus != 0)  return;
  else
  error=1;   
}

int sendmail( LPVOID l)
{
   WSADATA        WSData;
   LPHOSTENT      lpHostEntry;
   LPSERVENT      lpServEntry;
   SOCKADDR_IN    SockAddr;
   SOCKET         hServer;
   int            iProtocolPort;
   char           szSmtpServerName[100], szToAddr[100], szFromAddr[100];
   char           szBuffer[4096], szMsgLine[255];   

   TDATA *d=(TDATA *)l;
   error=0;   

   lstrcpy( szSmtpServerName,d->serv );   
   lstrcpy( szToAddr,   d->toid );
   lstrcpy( szFromAddr,d->fromid );
      
   if ( WSAStartup(MAKEWORD(VERSION_MAJOR, VERSION_MINOR), &WSData) ) 
   {      
      cout<<"Error: Kann Winsock nicht finden"<<endl;             
      return(1);
   }
   
   lpHostEntry = gethostbyname( szSmtpServerName );
   if (lpHostEntry == NULL)    
   {    
      cout<<"Error: Kann den SMTP Server("<<szSmtpServerName<<")" 
            <<"nicht finden "<<endl;       
      return(1);
   }   
   
   hServer = socket( PF_INET, SOCK_STREAM, 0); 
   if (hServer == INVALID_SOCKET) 
   {            
      cout<<"Error: Cannot open mail server socket"<<endl;
      return(1);
   }
   
   lpServEntry = getservbyname( "mail", 0);
   
   if (lpServEntry == NULL)
     iProtocolPort = htons(IPPORT_SMTP);
   else
     iProtocolPort = lpServEntry->s_port;
   
   SockAddr.sin_family = AF_INET;
   SockAddr.sin_port = iProtocolPort;
   SockAddr.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list);
   
   if (connect( hServer, (PSOCKADDR) &SockAddr, sizeof(SockAddr)))
   {	
     cout<<"Error: Connecting to Server socket failed"<<endl;
     return (1);
   }

   Check( recv( hServer, szBuffer, sizeof(szBuffer), 0), "recv() Reply");
   
   wsprintf(szMsgLine,"HELO %s%s","microsoft [111.122.1.12]", EOL);
   Check(send(hServer,szMsgLine,strlen(szMsgLine), 0),"send() HELO");
   Check(recv(hServer,szBuffer,sizeof(szBuffer), 0),"recv() HELO");
   
   wsprintf( szMsgLine,"MAIL FROM:<%s>%s", szFromAddr,EOL);
   Check(send(hServer,szMsgLine,strlen(szMsgLine), 0),"send() MAIL FROM");
   Check(recv(hServer,szBuffer,sizeof(szBuffer), 0),"recv() MAIL FROM");

   wsprintf( szMsgLine,"RCPT TO:<%s>%s", szToAddr, EOL);
   Check(send(hServer,szMsgLine,strlen(szMsgLine),0),"send() RCPT TO");
   Check(recv(hServer,szBuffer,sizeof(szBuffer),0),"recv() RCPT TO");

   wsprintf( szMsgLine,"DATA%s", EOL);
   Check(send(hServer,szMsgLine,strlen(szMsgLine),0),"send() DATA");
   Check(recv(hServer,szBuffer,sizeof(szBuffer),0),"recv() DATA");


   char sdate[70];
   lstrcpy(sdate,"Date: ");
   char s1s[70];
   GetDateFormat(0x409,0,0,"ddd,dd MMM yyyy",s1s,200);
   lstrcat(sdate,s1s);
   lstrcat(sdate," ");
   GetTimeFormat(0x409,0,0,"HH:mm:ss",s1s,200);
   lstrcat(sdate,s1s);
   lstrcat(sdate," PM");

   char header[350];
   lstrcpy(header,"From: ");
   lstrcat(header,d->name );
   lstrcat(header,"<");
   lstrcat(header,d->fromid );
   lstrcat(header,">");
   lstrcat(header,"\r\n");
   lstrcat(header,"To: ");
   lstrcat(header,d->toid );
   lstrcat(header,"\r\n");
   lstrcat(header,"Subject: ");
   lstrcat(header,d->sub );
   lstrcat(header,"\r\n");
   lstrcat(header,sdate);
   lstrcat(header,"\r\n");
   lstrcat(header,"X-Mailer: Outlook Express 1.00\r\nMIME-Version:
           1.0\r\nContent-Type:text/plain;\r\n\tcharset=\"iso-8859-1\"
           \r\nContent-Transfer-Encoding: 7bit\r\n\r\n");
 
   wsprintf( szMsgLine,header);
   Check(send(hServer,szMsgLine,strlen(szMsgLine), 0),"send() header");
   if (error)
   return error;

  lstrcpy(pszBody,d->mes );
  lstrcat(pszBody,"\r\n\r\n");
  Check(send( hServer,pszBody, strlen(pszBody), 0), "send() message");
  wsprintf(szMsgLine,"%s.%s", EOL, EOL);
  Check(send(hServer,szMsgLine, strlen(szMsgLine),0),"send() end-message");
  Check(recv(hServer,szBuffer, sizeof(szBuffer),0),"recv() end-message");
  wsprintf(szMsgLine,"QUIT%s",EOL);
  Check(send(hServer,szMsgLine,strlen(szMsgLine),0),"send() QUIT");
  Check(recv(hServer,szBuffer,sizeof(szBuffer),0),"recv() QUIT");
  closesocket(hServer);
  WSACleanup();
   
return error;
}
 
so also nun weiß ich das das verschicken nicht ging! Kann mir jemand von euch klügen Köpfen sagen wieso es nicht gegangen sein könnte? Bzw mir ein Bsp zeigen wies gehen könnte?
 
moin


Hier mal einb Beispiel, es ist aber abhängig von Outlook:
http://old.quellcodes.de/show_tip.php?eintrag=513&programmiersprache=cpp&art=internet

Hier noch ein Beispiel das ich gefunden hab:
Code:
#include <windows.h> 
#include <stdio.h> 
#include <mapi.h> 
#include <conio.h> 

#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 

///////////////////////////////////////////////////////////////////////////// 
// The one and only application object 

CWinApp theApp; 

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) 
{ 

   // Achtung: 
   // Es wird ein einwandfreies Outlook benötigt um Emails zu Versenden 

   char szSubject [] = "Test E-MAIL"; 
    
   char szMesg  [] =   "Hallo,\n"\ 
                  "es kann so einfach sein, mit wenig Aufwand erstaunliche Wirkung " 
                  "zu erzielen.\n" 
                  "Dass das Simple-MAPI sooo simpel ist, hatte ich nicht gedacht.\n"; 
    

   MapiRecipDesc Empfaenger = { 
                           0,                  // Reserviert 
                           MAPI_TO,            // Recipient Typ 
                           "Name Empfaenger",         // Name 
                           "SMTP:micev@dplanet.ch",// Adreßtyp + Adresse 
                           0,                  //  
                           NULL               //  
                        }; 

   MapiMessage MailBody =   { 
                                0,         // Reserved 
                           szSubject,   // Subject 
                           szMesg,      // Message Text 
                           NULL,      // Message Type 
                           NULL,      // ptr auf DateReceived oder NULL 
                           NULL,      // Thread Handle oder NULL 
                           0,         // Flags, normal 0 
                           NULL,      // Originator (Absender) 
                           1,         // Anzahl Mesg Recipient structs 
                           &Empfaenger,// Recipient Structure 
                           0,         // Anzahl attachments 
                           NULL      // Dateiattachment 
                     }; 


   //----------------------------------------------------------------------------------------------- 

    HINSTANCE   hMAPILib; 
   LPMAPISENDMAIL MAPISendMail; 

   //MAPI.LIB ------------------------------------------------------------------------------------ 

    
   if ( (hMAPILib = LoadLibrary("MAPI32.DLL")) == INVALID_HANDLE_VALUE ) 
   { 
      printf("LoadLibrary Fehler: %ld\n", GetLastError()); 
      getch();  exit(1); 
   } 
   else 
   {       

      if ((MAPISendMail = (LPMAPISENDMAIL)GetProcAddress (hMAPILib, "MAPISendMail")) == NULL) 
         { 
            printf("Cannot find MAPISendMail\n"); 
         getch(); exit(1); 
         } 
         else 
         { 
          int   n=0; 
          char   c; 

          do 
          { 

            if (MAPISendMail (0, 0, &MailBody, 0, 0) != SUCCESS_SUCCESS) 
            { 
               printf("Cannot send message\n"); 
               getch(); exit(1); 
            } 

            printf("Mail zum %d Versenden\n",++n); 
            c=getch(); 
             
          } 
          while(c!=27);   //ESC Taste 

          printf("Programm wurde mit ESCAPE BEENDET\n"); 

         } 
   } 
    
    FreeLibrary(hMAPILib); 

   return 0; 
}


mfg
umbrasaxum
 
Hmmm ich denke das is nicht ganz so das was ich wollte^^ Denn das was ich da hätte da verschickt man es nicht von nem Prog aus! Eben total anonym! Oder is da irgendwo etwas was mir helfen sollte?(kann nämlich nix erkennen)
 
moin


Ja wie ich schon geschrieben hatte ist der Code abhängig von Outlook.
Und das es dir um Anonymität geht hast du noch nicht geschrieben!


mfg
umbrasaxum
 
Sorry, wenn ich schon wieder nerve, aber gibt es eigentlich irgendeinen Grund, warum jemand scharf darauf sein sollte, anonyme Emails zu verschicken?
 
moin


Da müssen wir mal auf die Antwort von Andreas703 warten, es wäre sowieso leichter sich ne gefakte Adresse zu besorgen und das dann darüber zu machen.

Aber nochmal zum Thema:
Ist es überhaupt noch möglich Mails unter falschem Namen zu versenden?
Ich denke nicht, aufjedenfall liegt es nciht am Quellcode da es "von Hand" auch nicht geht.


mfg
umbrasaxum
 
Zurück