<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[E-Mail abholen und senden]]></title><description><![CDATA[<p>Ich hab das Problem, das ich mit dem unten angeführten Code versuche die Emails abzuholen, kommt ein error. Wenn ich versuche eine Email zu schreiben kommt ein Timeout vom smtp-Server.(Ich hab die angaben für smtp entsprechend geändert).</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt; 

#include &lt;winsock2.h&gt; 

#include &lt;stdio.h&gt;//Prototypen 
#include &lt;iostream&gt; 

using namespace std; 

int startWinsock(void); 

long getAddrFromString(char* hostnameOrIp, SOCKADDR_IN* addr) 

{ 

  long rc; 

  unsigned long ip; 

  HOSTENT* he;  /* Parameter prüfen */ 

  if(hostnameOrIp==NULL || addr==NULL) 

    return SOCKET_ERROR;  /* eine IP in hostnameOrIp ? */ 

  ip=inet_addr(hostnameOrIp);  /* bei einem fehler liefert inet_addr den Rückgabewert INADDR_NONE */ 

  if(ip!=INADDR_NONE) 

  { 

    addr-&gt;sin_addr.s_addr=ip; 

    return 0; 

  } 

  else 

  { 

    /* Hostname in hostnameOrIp auflösen */ 

    he=gethostbyname(hostnameOrIp); 

    if(he==NULL) 

    { 

      return SOCKET_ERROR; 

    } 

    else 

    { 

      /*die 4 Bytes der IP von he nach addr kopieren */ 

      memcpy(&amp;(addr-&gt;sin_addr),he-&gt;h_addr_list[0],4); 

    } 

    return 0; 

  } 

} 

void wait () 
{ 
    std::cin.clear(); 
    std::cin.ignore(std::cin.rdbuf()-&gt;in_avail()); 
    std::cin.get(); 
} 

int main() 

{ 

  long rc; 

  SOCKET s; 

  SOCKADDR_IN addr; 

  rc=startWinsock(); 

  if(rc!=0) 

  { 

    printf(&quot;Fehler: startWinsock, fehler code: %d\n&quot;,rc); 

    return 1; 

  } 

  else 

  { 

    printf(&quot;Winsock gestartet!\n&quot;); 

  } 

  s=socket(AF_INET,SOCK_STREAM,0); 

if(s==INVALID_SOCKET) 

{ 

  printf(&quot;Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n&quot;,WSAGetLastError()); 

  return 1; 

} 

else 

{ 

  printf(&quot;Socket erstellt!\n&quot;); 

} 

  memset(&amp;addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten 

addr.sin_family=AF_INET; 

addr.sin_port=htons(110); // wir verwenden mal port 12345 

//addr.sin_addr.s_addr=inet_addr(&quot;127.0.0.1&quot;); // zielrechner ist unser eigener 

 rc=getAddrFromString(&quot;pop.web.de&quot;,&amp;addr); 
 if(rc==SOCKET_ERROR) 
 {     
      printf(&quot;IP für %s konnte nicht aufgeloest werden\n&quot;);     
      return 1;   
 }   
 else   
 {     
      printf(&quot;IP aufgeloest!\n&quot;);   
 } 

rc=connect(s,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR)); 

if(rc==SOCKET_ERROR) 

{ 

  printf(&quot;Fehler: connect gescheitert, fehler code: %d\n&quot;,WSAGetLastError()); 

  //return 1; 

} 

else 

{ 

  cout &lt;&lt; &quot;Verbunden mit smtp.web.de&quot; &lt;&lt; endl; 

} 
  int zahl = 0; 
  char puffer[255] = &quot; &quot;; 
  zahl = recv(s, puffer, 255, 0); 
  if (zahl==SOCKET_ERROR) cout &lt;&lt; &quot;Error&quot;&lt;&lt; endl; 
  cout &lt;&lt; zahl &lt;&lt; endl; 
  cout &lt;&lt; puffer &lt;&lt; endl; 
  strcpy(puffer, &quot; &quot;); 
  Sleep(1000); 
  zahl = send(s, &quot;USER xxx@web.de\0&quot;,17,0); 
  if (zahl==SOCKET_ERROR) cout &lt;&lt; &quot;Error&quot;&lt;&lt; endl; 
  cout &lt;&lt; zahl &lt;&lt; endl; 
  zahl = recv(s, puffer, 255, 0); 
  if (zahl==SOCKET_ERROR) cout &lt;&lt; &quot;Error&quot;&lt;&lt; endl; 
  cout &lt;&lt; zahl &lt;&lt; endl; 
  cout &lt;&lt; puffer &lt;&lt; endl; 
  strcpy(puffer, &quot; &quot;); 
  Sleep(1000); 
  zahl = send(s, &quot;PASS PASSWORT\0&quot;, 17, 0); 
  if (zahl==SOCKET_ERROR) cout &lt;&lt; &quot;Error&quot;&lt;&lt; endl; 
  cout &lt;&lt; zahl &lt;&lt; endl; 
  Sleep(100); 
  zahl = recv(s, puffer, 255, 0); 
  if (zahl==SOCKET_ERROR) cout &lt;&lt; &quot;Error&quot;&lt;&lt; endl; 
  cout &lt;&lt; zahl &lt;&lt; endl; 
  cout &lt;&lt; puffer &lt;&lt; endl; 
  wait(); 
  return 0; 

} 
int startWinsock(void) 

{ 

  WSADATA wsa; 

  return WSAStartup(MAKEWORD(2,0),&amp;wsa); 

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/203946/e-mail-abholen-und-senden</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 00:53:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/203946.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 28 Jan 2008 14:12:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to E-Mail abholen und senden on Mon, 28 Jan 2008 14:12:36 GMT]]></title><description><![CDATA[<p>Ich hab das Problem, das ich mit dem unten angeführten Code versuche die Emails abzuholen, kommt ein error. Wenn ich versuche eine Email zu schreiben kommt ein Timeout vom smtp-Server.(Ich hab die angaben für smtp entsprechend geändert).</p>
<pre><code class="language-cpp">#include &lt;windows.h&gt; 

#include &lt;winsock2.h&gt; 

#include &lt;stdio.h&gt;//Prototypen 
#include &lt;iostream&gt; 

using namespace std; 

int startWinsock(void); 

long getAddrFromString(char* hostnameOrIp, SOCKADDR_IN* addr) 

{ 

  long rc; 

  unsigned long ip; 

  HOSTENT* he;  /* Parameter prüfen */ 

  if(hostnameOrIp==NULL || addr==NULL) 

    return SOCKET_ERROR;  /* eine IP in hostnameOrIp ? */ 

  ip=inet_addr(hostnameOrIp);  /* bei einem fehler liefert inet_addr den Rückgabewert INADDR_NONE */ 

  if(ip!=INADDR_NONE) 

  { 

    addr-&gt;sin_addr.s_addr=ip; 

    return 0; 

  } 

  else 

  { 

    /* Hostname in hostnameOrIp auflösen */ 

    he=gethostbyname(hostnameOrIp); 

    if(he==NULL) 

    { 

      return SOCKET_ERROR; 

    } 

    else 

    { 

      /*die 4 Bytes der IP von he nach addr kopieren */ 

      memcpy(&amp;(addr-&gt;sin_addr),he-&gt;h_addr_list[0],4); 

    } 

    return 0; 

  } 

} 

void wait () 
{ 
    std::cin.clear(); 
    std::cin.ignore(std::cin.rdbuf()-&gt;in_avail()); 
    std::cin.get(); 
} 

int main() 

{ 

  long rc; 

  SOCKET s; 

  SOCKADDR_IN addr; 

  rc=startWinsock(); 

  if(rc!=0) 

  { 

    printf(&quot;Fehler: startWinsock, fehler code: %d\n&quot;,rc); 

    return 1; 

  } 

  else 

  { 

    printf(&quot;Winsock gestartet!\n&quot;); 

  } 

  s=socket(AF_INET,SOCK_STREAM,0); 

if(s==INVALID_SOCKET) 

{ 

  printf(&quot;Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n&quot;,WSAGetLastError()); 

  return 1; 

} 

else 

{ 

  printf(&quot;Socket erstellt!\n&quot;); 

} 

  memset(&amp;addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten 

addr.sin_family=AF_INET; 

addr.sin_port=htons(110); // wir verwenden mal port 12345 

//addr.sin_addr.s_addr=inet_addr(&quot;127.0.0.1&quot;); // zielrechner ist unser eigener 

 rc=getAddrFromString(&quot;pop.web.de&quot;,&amp;addr); 
 if(rc==SOCKET_ERROR) 
 {     
      printf(&quot;IP für %s konnte nicht aufgeloest werden\n&quot;);     
      return 1;   
 }   
 else   
 {     
      printf(&quot;IP aufgeloest!\n&quot;);   
 } 

rc=connect(s,(SOCKADDR*)&amp;addr,sizeof(SOCKADDR)); 

if(rc==SOCKET_ERROR) 

{ 

  printf(&quot;Fehler: connect gescheitert, fehler code: %d\n&quot;,WSAGetLastError()); 

  //return 1; 

} 

else 

{ 

  cout &lt;&lt; &quot;Verbunden mit smtp.web.de&quot; &lt;&lt; endl; 

} 
  int zahl = 0; 
  char puffer[255] = &quot; &quot;; 
  zahl = recv(s, puffer, 255, 0); 
  if (zahl==SOCKET_ERROR) cout &lt;&lt; &quot;Error&quot;&lt;&lt; endl; 
  cout &lt;&lt; zahl &lt;&lt; endl; 
  cout &lt;&lt; puffer &lt;&lt; endl; 
  strcpy(puffer, &quot; &quot;); 
  Sleep(1000); 
  zahl = send(s, &quot;USER xxx@web.de\0&quot;,17,0); 
  if (zahl==SOCKET_ERROR) cout &lt;&lt; &quot;Error&quot;&lt;&lt; endl; 
  cout &lt;&lt; zahl &lt;&lt; endl; 
  zahl = recv(s, puffer, 255, 0); 
  if (zahl==SOCKET_ERROR) cout &lt;&lt; &quot;Error&quot;&lt;&lt; endl; 
  cout &lt;&lt; zahl &lt;&lt; endl; 
  cout &lt;&lt; puffer &lt;&lt; endl; 
  strcpy(puffer, &quot; &quot;); 
  Sleep(1000); 
  zahl = send(s, &quot;PASS PASSWORT\0&quot;, 17, 0); 
  if (zahl==SOCKET_ERROR) cout &lt;&lt; &quot;Error&quot;&lt;&lt; endl; 
  cout &lt;&lt; zahl &lt;&lt; endl; 
  Sleep(100); 
  zahl = recv(s, puffer, 255, 0); 
  if (zahl==SOCKET_ERROR) cout &lt;&lt; &quot;Error&quot;&lt;&lt; endl; 
  cout &lt;&lt; zahl &lt;&lt; endl; 
  cout &lt;&lt; puffer &lt;&lt; endl; 
  wait(); 
  return 0; 

} 
int startWinsock(void) 

{ 

  WSADATA wsa; 

  return WSAStartup(MAKEWORD(2,0),&amp;wsa); 

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1445100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1445100</guid><dc:creator><![CDATA[liggi1998]]></dc:creator><pubDate>Mon, 28 Jan 2008 14:12:36 GMT</pubDate></item></channel></rss>