hi, ich möchte mit einem reinen C-Programm eine Email versenden - geht das?? wenn ja - wäre ich über jeden sinnvollen tipp froh! Ich verwende Microsoft Visual Studio 2008. Danke. Gruss
Natives C oder C# ?! Letzteres bietet Dir schon entsprechende Funktionen. Bei C ist der Weg so: - TCP/IP Verbindung zu einem SMTP Server deiner Wahl aufbauen und dann das Protokoll entsprechend der RFC anwenden.
Nein leider geht das mit reihen C Code nicht, denn Reines C ( Also ISO 9899:1999 ) weiss nichts von Netzwerk Socket etc.. also wirst du mindestens eine Erweiterung des C Standart brauchen, allerdings werden Netzwerk Sockets immer recht ähnlich abgehandelt so das du diese wahrscheinlich recht portable abbilden kannst. Danach musst du dich an die Entsprechenden RFC halten, das darfst du dann auch gerne im Reinen ISO C machen.
Wenn es nicht ganz so puristisch sein muss und auch der Aufruf eines Command-Line Programms zulässig ist, dann wirds einfacher (=> blat).
ja ein commandline aufruf ist möglich! hast du da ein beispiel oder kannst du mir das prinzipielle vorgehen schildern!??!
http://www.msxfaq.de/tools/blat.htm File mit Inhalt erzeugen, und dann system("blat.exe blablabla") aufrufen. Für Fortgeschrittene: statt dessen via popen(...) aufrufen und Inhalt reinpipen.
Imon schrieb: > Nein leider geht das mit reihen C Code nicht, > denn Reines C ( Also ISO 9899:1999 ) weiss nichts von Netzwerk Socket > etc.. > also wirst du mindestens eine Erweiterung des C Standart brauchen, Das ist natürlich Humbug, es sei denn, man fasst den Aufruf von zum Betriebssystem gehörenden Funktionen als "Erweiterung des C Standar_D_" auf.
Visual Studio 2008 und reines C ? Kann ich mir nicht vorstellen, daß jemand sowas macht ;-) Aber wenn MFC, dann CPJNSMTPConnection v2.92 An MFC class to encapsulate the SMTP protocol, http://www.naughter.com/smtp.html. Wenn kein MFC, dann das selbige in eine DLL packen (Wrapper für REINES C drumrum ;-) ), und von Deinem Programm aufrufen.
Rufus Τ. Firefly schrieb: > Imon schrieb: >> Nein leider geht das mit reihen C Code nicht, >> denn Reines C ( Also ISO 9899:1999 ) weiss nichts von Netzwerk Socket >> etc.. >> also wirst du mindestens eine Erweiterung des C Standart brauchen, > > Das ist natürlich Humbug, es sei denn, man fasst den Aufruf von zum > Betriebssystem gehörenden Funktionen als "Erweiterung des C Standar_D_" > auf. Natürlich ist das Aufrufen einer zum Betriebsystem gehörenden Funktion eine erweiterung des C Standards, wenn du dein Programm auf einen anderen Betriebsystem oder sogar ohne Betriebsystem laufen lässt, geht es nicht weil eben die möglichkeiten welche die Funktion des Betriebsystem liefert nicht im C Standard enthalten ist. Sicherlich würde man in der Praxis es so hinnehmen das es da eine Betriebsystemfunktion gibt um den Bildschirm zu lösen den Socket zu Öffnen oder was auch immer. Aber das sind nun mal Erweiterungen welche der Reihe C Standard nicht kennt. Ergo ist das Programm im zweifel nicht in Reinen C Geschrieben.. Allerdings bin ich mir auch der Tatsache bewusst das man es, mit reinen C schwer hat ein reales Problem zu lösen. Aber man sollte im zweifel wenigsten Wissen, habe ich ein Problem mit der Sprache C , oder denn Erweiterungen des Betriebssystems. und der ISO Standard für C kennt nun mal kein Netzwerk, deshalb wird es nur möglich sein mit einer Erweiterung der Sprache C das Problem Email senden erfolgreich zu lösen. Die Formell Korrekte Antwort muss also lauten. Nein es ist nicht möglich mit den Reinen C Funktionen, die im ISO oder K&R beschrieben sind, das Problem zu lösen.
Eine Spracherweiterung ist etwas anderes als Libraries, die Schnittstellen zu Betriebssystemfunktionen zur Verfügung stellen. Denn bereits die Standard-C-Library tut genau das, wenn es um Speicherverwaltung oder Zugriffe aufs Dateisystem geht. Das Dateisystem nämlich ist kein Sprachbestandteil von C, sondern gehört dem Betriebssystem, wobei es auch Betriebssysteme gibt, die gar keines haben. Lies Dir die entsprechenden Abschnitte in der zweiten Ausgabe des K&R mal genauer durch. Dein "reines C" ist daher nur "rein", wenn es ohne Standardlibrary betrachtet wird. Ich habe aber das Gefühl, daß eine Diskussion mit Dir darüber sinnlos sein dürfte. Außerdem dürfte der Threadstarter mit "reinem C" gemeint haben, daß er eben weder C++ noch C# verwenden will, sondern eben C. C im Sinne von ANSI-C (C89), denn was neueres kennt der MS-Compiler nach wie vor nicht.
Rufus Τ. Firefly schrieb: > Eine Spracherweiterung ist etwas anderes als Libraries, die > Schnittstellen zu Betriebssystemfunktionen zur Verfügung stellen. Denn > bereits die Standard-C-Library tut genau das, wenn es um "Standard-C-Library" - gemerkt? > Speicherverwaltung oder Zugriffe aufs Dateisystem geht. Das Dateisystem > nämlich ist kein Sprachbestandteil von C, sondern gehört dem > Betriebssystem, wobei es auch Betriebssysteme gibt, die gar keines > haben. > > Lies Dir die entsprechenden Abschnitte in der zweiten Ausgabe des K&R > mal genauer durch. K&R (1 oder 2) != ISO/IEC 9899. > Dein "reines C" ist daher nur "rein", wenn es ohne Standardlibrary > betrachtet wird. Du meinst das ganze Kapitel 7 "Library" im C99-Standard ist da nur aus Jux und Dollerei drin? Bwahaha, ja, genau. So wird es sein. > Außerdem dürfte der Threadstarter mit "reinem C" gemeint haben, daß er > eben weder C++ noch C# verwenden will, sondern eben C. C im Sinne von > ANSI-C (C89), denn was neueres kennt der MS-Compiler nach wie vor nicht. Traurig für den MS-Compiler. Wobei ich schätze der kann zumindest ein Subset der C99-Features, was dem TS aber auch nicht hilft.
Rufus Τ. Firefly schrieb: > Ich habe aber das Gefühl, daß eine Diskussion mit Dir darüber sinnlos > sein dürfte.
Rufus Τ. Firefly schrieb: > Rufus Τ. Firefly schrieb: >> Ich habe aber das Gefühl, daß eine Diskussion mit Dir darüber sinnlos >> sein dürfte. Bitte auf den Absender achten. Danke. Du scheinst zu glauben das sowas: ----------------->8 --------------------- #include <stdlib.h> int main(void) { void* foo = malloc(4711); free(foo); return 0; } ----------------->8 --------------------- nicht (für Hosted Environments, wovon hier geredet wird) komplett vom Standard abgedeckt ist. Das finde ich ehrlich gesagt, ummm, beunruhigend.
Jasch schrieb: > Bitte auf den Absender achten. Danke. Ich darf mich selbst zitieren. Das hast Du mir nicht abzusprechen.
Rufus Τ. Firefly schrieb: > Jasch schrieb: >> Bitte auf den Absender achten. Danke. > > Ich darf mich selbst zitieren. Das hast Du mir nicht abzusprechen. <Grins>Oooooo. Kaayyyyyy...</Grins>
Jasch schrieb: > Rufus Τ. Firefly schrieb: >> Jasch schrieb: >>> Bitte auf den Absender achten. Danke. >> >> Ich darf mich selbst zitieren. Das hast Du mir nicht abzusprechen. > > <Grins>Oooooo. Kaayyyyyy...</Grins> Haha So isser halt, der Rufus.
Wie ich bereits schrieb, ist die Diskussion sinnlos, da sie komplett an dem vorbeigeht, was der Threadstarter wissen wollte. Der wollte in C eine Email versenden und verwandte die etwas unglückliche Formulierung "reines C", um sich von C++ oder gar C# abzugrenzen. Weitere Spitzfindigkeiten eher pseudoakademischer Natur sind hier nicht sinnvoll.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.