<?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[Emails versenden]]></title><description><![CDATA[<p>Morgen hat wer eine Ahnung wie ich Email mit C++ versenden kann ?</p>
<p>Ich will das OHNE irgendwelche Komponeten ( z.b. indy komponente ) machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/230270/emails-versenden</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 11:22:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/230270.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 23 Dec 2008 11:21:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Emails versenden on Tue, 23 Dec 2008 11:21:49 GMT]]></title><description><![CDATA[<p>Morgen hat wer eine Ahnung wie ich Email mit C++ versenden kann ?</p>
<p>Ich will das OHNE irgendwelche Komponeten ( z.b. indy komponente ) machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634546</guid><dc:creator><![CDATA[mail]]></dc:creator><pubDate>Tue, 23 Dec 2008 11:21:49 GMT</pubDate></item><item><title><![CDATA[Reply to Emails versenden on Tue, 23 Dec 2008 11:26:39 GMT]]></title><description><![CDATA[<p>Ohne irgendwelche Komponenten ist das unmöglich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634548</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 23 Dec 2008 11:26:39 GMT</pubDate></item><item><title><![CDATA[Reply to Emails versenden on Tue, 23 Dec 2008 11:52:41 GMT]]></title><description><![CDATA[<p>Wo muss man sich einlesen wenn man selber eine Mail Komponete Programmieren will z.b. ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634567</guid><dc:creator><![CDATA[mail]]></dc:creator><pubDate>Tue, 23 Dec 2008 11:52:41 GMT</pubDate></item><item><title><![CDATA[Reply to Emails versenden on Tue, 23 Dec 2008 12:06:06 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Mit ISO-C++ ist es unmöglich. Mit C++ und Sockets ist es durchaus möglich. Kann man ja auch mit telnet machen, wenn man einen entsprechenden Zugang zu einem Mail-Server hat. Mit SMTP zumindest recht simpel. Eigentlich muss man nur die Zeilen, wie man sie im Wikipedia-Artikel über <a href="http://de.wikipedia.org/wiki/SMTP" rel="nofollow">SMTP</a> zu finden sind an den Server senden und ebenso muss man die Antworten korrekt auswerten. Natürlich muss man eventuell noch eine entsprechende Authentifizierung durchführen (siehe dazu z.B. SMTP-Auth). Da ich grad nicht zuhause bin, hab ich leider kein Codebeispiel parat (zuhause müsste ich noch nen source von mir haben, der auch nen Anhang mit versendet).</p>
<p>Greetz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634576</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Tue, 23 Dec 2008 12:06:06 GMT</pubDate></item><item><title><![CDATA[Reply to Emails versenden on Tue, 23 Dec 2008 15:45:35 GMT]]></title><description><![CDATA[<p>Vellas könntest du mir vielleicht später das Code beispiel posten plz ? :xmas2:</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634710</guid><dc:creator><![CDATA[mail]]></dc:creator><pubDate>Tue, 23 Dec 2008 15:45:35 GMT</pubDate></item><item><title><![CDATA[Reply to Emails versenden on Tue, 23 Dec 2008 17:25:04 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Naja, ist nicht ganz trivial. Meine Socket-Klasse kann ich dir leider nit posten, aber eigentlich macht die nicht viel mehr, als normale Verbindungsaufbau und Verbindungsabbau Funktionen zu implementieren und die send und recv Funktionen der Socket-Bibliothek zu kapseln. Auf jeden Fall solltest du beim receive einen timeout auf den Socket per select legen. Wie das geht, kannst du im Internet recherchieren, ich will dir hier schließlich nicht alles vorkauen, aber ich kann dir versichern, ich habe ausschließlich Posix-Sockets verwendet, wie sie in ws2_32.lib in Windows zur Verfügung gestellt werden bzw. in Unix-Systemen in der socket.h, netdb.h und anderen Headern zur Verfügung stehen.</p>
<pre><code class="language-cpp">bool sendMail(string szServer, string szFrom, string szTo, string szSubject, string szMessage)
{
  Socket theSocket;
  unsigned int timeout = 10000; // 10 seconds
  string strResponse;

  // Connect to the server
  if (!theSocket.connect(szServer, 25))
  {
    cerr &lt;&lt; &quot;Socket creation failed&quot; &lt;&lt; endl;
    return false;
  }

  // Read the &quot;HELO&quot; response from the server
  if (theSocket.receive(strResponse, timeout)&lt;0)
    return false;

  if (strResponse.substr(0, 3) != (&quot;220&quot;))
  {
    string strError = &quot;ERROR: Not a valid SMTP server response\r\n&quot;;
    strError += strResponse;
    cerr &lt;&lt; strError &lt;&lt; endl;
    theSocket.send(&quot;QUIT\r\n&quot;);
    return false;
  }

  // Send the &quot;FROM&quot; line
  string strCommand = &quot;MAIL FROM:&lt;&quot;;
  strCommand += szFrom;
  strCommand += &quot;&gt;\r\n&quot;;
  theSocket.send(strCommand);

  // and check the response
  if (theSocket.receive(strResponse, timeout)&lt;0)
    return false;

  if (strResponse.substr(0, 3) != (&quot;250&quot;))
  {
    string strError = &quot;ERROR: Sender rejected\r\n&quot;;
    strError += strResponse;
    cerr &lt;&lt; strError &lt;&lt; endl;
    theSocket.send(&quot;QUIT\r\n&quot;);
    return false;
  }

  // Send the &quot;RCPT&quot; line
  strCommand = &quot;RCPT TO:&lt;&quot;;
  strCommand += szTo;
  strCommand += &quot;&gt;\r\n&quot;;
  theSocket.send(strCommand);

  // and check the response
  if (theSocket.receive(strResponse, timeout)&lt;0)
    return false;

  if (strResponse.substr(0, 3) != (&quot;250&quot;))
  {
    string strError = &quot;ERROR: Recipient rejected\r\n&quot;;
    strError += strResponse;
    cerr &lt;&lt; strError &lt;&lt; endl;
    theSocket.send(&quot;QUIT\r\n&quot;);
    return false;
  }

  // Send the &quot;DATA&quot; line
  theSocket.send(&quot;DATA\r\n&quot;);

  // and check the response
  if (theSocket.receive(strResponse, timeout)&lt;0)
    return false;

  if (strResponse.substr(0, 3) != (&quot;354&quot;))
  {
    string strError = &quot;ERROR: DATA command rejected\r\n&quot;;
    strError += strResponse;
    cerr &lt;&lt; strError &lt;&lt; endl;
    theSocket.send(&quot;QUIT\r\n&quot;);
    return false;
  }

  // Send the &quot;Subject&quot; line
  strCommand = &quot;From: &quot; + szFrom + &quot;\r\n&quot;;
  strCommand += &quot;To: &quot; + szTo + &quot;\r\n&quot;;
  strCommand += &quot;Subject: &quot; + szSubject;
  strCommand += &quot;\r\n&quot;;
  theSocket.send(strCommand);

  // Send the message data
  if (theSocket.send(szMessage)&lt;0)
    return false;

  // Send the termination line
  theSocket.send(&quot;\r\n.\r\n&quot;);

  // and check the response
  if (theSocket.receive(strResponse, timeout)&lt;0)
    return false;

  if (strResponse.substr(0, 3) != (&quot;250&quot;))
  {
    string strError = &quot;ERROR: Message body rejected\r\n&quot;;
    strError += strResponse;
    cerr &lt;&lt; strError &lt;&lt; endl;
    theSocket.send(&quot;QUIT\r\n&quot;);
    return false;
  }

  // Send the &quot;QUIT&quot; line
  theSocket.send(&quot;QUIT\r\n&quot;);

  return true;
}
</code></pre>
<p>Send ist eigentlich nichts anderes als ein gekapselter Aufruf von der send Funktion aus der Socket-Bibliothek. Die connect-Funktion baut die Verbindung auf und verbindet sich auf den angegebenen Server auf den Port 25. recv in receive ist zwar auch eine eigene Funktion, aber kapselt, äquivalent zu send, die recv-Funktion aus der Socket-Bibliothek.</p>
<p>Der Aufruf:</p>
<pre><code class="language-cpp">string strToAddress = &quot;mail@domain.de&quot;;
string strSubject = &quot;Subject&quot;;
string strServer = &quot;domain.de&quot;;
string strFrom = &quot;mail@domain.de&quot;;

cout &lt;&lt; sendMail(strServer, strFrom, strToAddress, strSubject, &quot;Hallo, Mail-World! :)&quot;) &lt;&lt; endl;
</code></pre>
<p>Wenn du einigermaßen mit Sockets umgehen kannst sollte das kein Problem sein. Den Teil zum versenden von Anhängen habe ich entfernt. Wenn du wissen willst wie das geht, musst du es dir anlesen und/oder halt mit einer Mailanwendung ausprobieren und auswerten.</p>
<p>Gut die sendMail-Funktion ist nicht grad gut programmiert, aber ich hab das Beispiel grad eben mal schnell zusammengebastelt. Der eigentliche Code ist wesentlich umfangreicher (und auch nicht in nur einer Funktion realisiert).</p>
<p>Greetz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634755</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Tue, 23 Dec 2008 17:25:04 GMT</pubDate></item><item><title><![CDATA[Reply to Emails versenden on Tue, 23 Dec 2008 23:59:59 GMT]]></title><description><![CDATA[<p>Der Code geht davon aus das ein recv-Call immer eine Zeile einliest. Das muss unbedingt gefickst werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634921</guid><dc:creator><![CDATA[!!]]></dc:creator><pubDate>Tue, 23 Dec 2008 23:59:59 GMT</pubDate></item><item><title><![CDATA[Reply to Emails versenden on Wed, 24 Dec 2008 03:51:38 GMT]]></title><description><![CDATA[<p>!! schrieb:</p>
<blockquote>
<p>Der Code geht davon aus das ein recv-Call immer eine Zeile einliest. Das muss unbedingt gefickst werden.</p>
</blockquote>
<p>Viel Spass dabei <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Wenn ich auch nicht weiß woher du wissen willst, wie ich die recv-Funktion in receive genau aufrufe. Es wird auf jeden Fall sichergestellt das alles eingelesen wird. Was man eventuell besser machen sollte ist, sicherstellen das, wenn mehrere Zeilen gelesen wurden, diese entsprechend gesplittet werden.</p>
<p>Greetz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1634924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1634924</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Wed, 24 Dec 2008 03:51:38 GMT</pubDate></item><item><title><![CDATA[Reply to Emails versenden on Wed, 24 Dec 2008 21:58:11 GMT]]></title><description><![CDATA[<p>Es gibt plattform-neutrale Netzwerk-Libs für C++, die auch gleich fertige Mail-Klassen mitbringen. <a href="http://pocoproject.org/" rel="nofollow">http://pocoproject.org/</a> ist z.B. eine gute Anlaufstelle.</p>
<p>Schau mal hier:<br />
<a href="http://pocoproject.org/docs/Poco.Net.SMTPClientSession.html#14908" rel="nofollow">http://pocoproject.org/docs/Poco.Net.SMTPClientSession.html#14908</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1635117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1635117</guid><dc:creator><![CDATA[Bulli]]></dc:creator><pubDate>Wed, 24 Dec 2008 21:58:11 GMT</pubDate></item></channel></rss>