z C programu na mail

Programovacie jazyky, rady, poradňa...
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

z C programu na mail

Príspevok od používateľa BX »

Zdravim... niekde som cital ze v C sa da napisat nech sa to co clovek zada poslalo na mail.
Mohli by ste mi poradit ako, ak je to len nejaky kusok kodu? Ak na to treba nejake silno velke skills tak nemusite, ale celkom by sa mi to hodilo na jednu vec :)
Dakujem vopred za odpovede (K+)
pheo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 212
Registrovaný: 20 sep 2005, 16:53
Bydlisko: moje hniezdo
Kontaktovať používateľa:

Príspevok od používateľa pheo »

no ak som spravne som pochpopil ty chces poslat spravu na email ?
Ak ano tak to si vyžaduje naštudovanie RFC protokolu smtp. Najdeš ich napr. tu:

Kód: Vybrať všetko

http://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol
Nemusis samozrejme vsetko precitat, staci iba cast o posielani,
Nasledne v cecku vytvoris soket, ktorý sa tvári ako súbor, do neho budes pekne zapisovať tak ako keby si chcel formatovat v subore (presne podla specifikacie)

Tu ti prilozim ukazku ako vytvorit echo pomocou soketov v c,

Kód: Vybrať všetko

#include <netinet/in.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>

#define HOSTNAME	"127.0.0.1"
#define PORT		7

main(int argc, char *argv[]) {
	char buffer[] = "Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\n";
	int sockfd, length, offset;
	struct sockaddr_in local_addr;

	if ((sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
		fprintf(stderr, "Cannot create socket.\n");
		exit(-1);
	}

	bzero(&local_addr, sizeof(local_addr));
	local_addr.sin_family = AF_INET;
	local_addr.sin_addr.s_addr = inet_addr(HOSTNAME);
	local_addr.sin_port = htons(PORT);

	if (connect(sockfd, (struct sockaddr *) &local_addr, sizeof(local_addr)) == -1) {
		fprintf(stderr, "Cannot connect to %s:%d.\n", HOSTNAME, PORT);
		exit(1);
   }

	if (write(sockfd, buffer, sizeof(buffer)) != sizeof(buffer)) {
		fprintf(stderr, "Error sending data.");
		exit(1);
	}

	offset = 0;

	do {
		if((length = read(sockfd, buffer + offset, sizeof(buffer) - offset)) <= 0) {
			fprintf(stderr, "Error receiving data.");
			exit(1);
		}
		offset += length;
	} while (offset != sizeof(buffer));

	fprintf(stdout, "%s", buffer);

	close(sockfd);
}
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

No ak som spravne pochopil tak na to treba asi skill :lol: (teda aspon viac ako mam ja) :lol:
Nevadi... kazdopadne dakujem a budem sa snazit aby som to co najskor vedel pouzit :)
Napísať odpoveď