Email unter C versenden

Gast #2105834
Lesenswert?

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.
Gast #2105840
Lesenswert?

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.
Persönliche Seite #2105910
Lesenswert?

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.
Gast #2106565
Lesenswert?

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.
Persönliche Seite #2106606
Lesenswert?

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.
Gast #2106694
Lesenswert?

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.
Gast #2108293
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren