14. februar 2004 - 19:53
Der er
28 kommentarer og 1 løsning
C++ mails?
Er der nogen måder, hvorpå man kan sende mails vha. c++? Jeg har set efter i diverse bøger og på nettet, men kan ikke finde noget...
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
14. februar 2004 - 19:55
#1
Sagtens. Du åbner en socket til port 25 på din mailserver og skriver emailen. Formatet er i RFC 821 og 822. Jeg kan også kort opridse det, hvis du vil.
14. februar 2004 - 20:27
#2
Det kunne være meget _godt med lidt reference på det.. Det er ikke noget jeg kender meget til..
14. februar 2004 - 20:34
#3
Eksempel: HELO 123.123.123.123 MAIL FROM: <mig@mitdomain.dk> RCPT TO: <dig@ditdomain.dk> DATA Return-Path: <mig@mitdomain.dk> From: mig@mitdomain.dk To: dig@ditdomain.dk Subject: Dette er en test Linie 1 Linie 2 Linie 3 . QUIT
14. februar 2004 - 20:35
#4
Alle linier afsluttes med \r\n. 123.123.123.123 er din IP adresse. Og der er mange variationer inkl. anvendelse af MIME, men dette er det allersimpleste.
14. februar 2004 - 20:52
#5
Hmm, jeg er ked af det, men jeg forstår ikke hvordan jeg skal bruge det.. Jeg er lidt grøn i C..
14. februar 2004 - 20:54
#6
Har du prøvet socket programmering før ?
14. februar 2004 - 20:55
#7
Nej, det er lige netop grunden til at jeg ikke ved hvad jeg skal gøre. :=)
14. februar 2004 - 20:57
#8
Jeg kan godt lave et komplet eksempel, men jeg ved bare ikke hvor meget du vil få ud af det. Kører du windows eller linux ?
14. februar 2004 - 20:58
#9
WindowsXP.. Eksemplet vil jeg gerne have.. Men du har ret, det er ikke sikkert, at jeg for noget ud af det.
14. februar 2004 - 21:00
#10
Ok giv mig 10 minutter.
14. februar 2004 - 21:02
#11
Finfin
14. februar 2004 - 21:15
#12
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <windows.h> #include <errno.h> void mailsend(char *hostname,char *to,char * from,char *subj,char *body) { int sd,status,tmp; char *buf,ownhost[100]; struct sockaddr local,remote; struct hostent *hostinfo; /* create socket */ sd=socket(AF_INET,SOCK_STREAM,0); if(sd<0) { printf("Error creating socket: %s\n",strerror(errno)); goto fin; } /* bind socket */ local.sa_family=AF_INET; memset(local.sa_data,0,sizeof(local.sa_data)); status=bind(sd,&local,sizeof(local)); if(status<0) { printf("Error binding socket: %s\n",strerror(errno)); goto fin; } /* lookup host */ hostinfo=gethostbyname(hostname); if(!hostinfo) { printf("Error looking up host: %s\n",hostname); goto fin; } /* connect to host */ remote.sa_family=hostinfo->h_addrtype; memcpy(remote.sa_data+2,hostinfo->h_addr_list[0],hostinfo->h_length); *((short *)remote.sa_data)=25; tmp=remote.sa_data[0]; remote.sa_data[0]=remote.sa_data[1]; remote.sa_data[1]=tmp; status=connect(sd,&remote,sizeof(remote)); if(status!=0) { printf("Error connecting to host: %s port: %d\n",hostname,25); goto fin; } /* send email */ gethostname(ownhost,sizeof(ownhost)); buf = malloc(2000+strlen(body)); sprintf(buf,"HELO %s\r\n" "MAIL FROM: <%s>\r\n" "RCPT TO: <%s>\r\n" "DATA\r\n" "Return-Path: <%s>\r\n" "From: %s\r\n" "To: %s\r\n" "Subject: %s\r\n" "\r\n" "%s\r\n" ".\r\n" "QUIT\r\n",ownhost,from,to,from,from,to,subj,body); status=send(sd,buf,strlen(buf),0); if(status<0) { printf("Error sending GET request\n"); goto fin; } free(buf); fin: closesocket(sd); return; } int main(int argc,char *argv[]) { WSADATA WSAData; WSAStartup(0x0101,&WSAData); mailsend("minmailserver", "dig@ditdomain.dk", "mig@mitdomain.dk", "Dette er en test", "Linie 1\r\nLinie 2\r\nLinie 3"); WSACleanup(); return 0; }
14. februar 2004 - 21:18
#13
Kigger det lige igennem . . Vender tilbage.
14. februar 2004 - 21:29
#14
Compile fejl i: Linie 49: "buf = malloc(2000+strlen(body));" -> invalid converrsion from 'void*' to ' ??
14. februar 2004 - 21:31
#15
Nogen compilere er lidt picky. buf = (char *)malloc(2000+strlen(body));
14. februar 2004 - 21:34
#16
hm, ok.. :)
14. februar 2004 - 21:37
#17
undefined reference to `socket@12' undefined reference to `bind@12' undefined reference to `gethostbyname@4' undefined reference to `connect@12' undefined reference to `gethostname@8' undefined reference to `send@16' undefined reference to `closesocket@4' undefined reference to `WSAStartup@8' undefined reference to `WSACleanup@0' <<-- LOL§ Jeg får et hav af "undefined references"?
14. februar 2004 - 21:40
#18
Du skal linke med ws2_32.lib eller wsock32.lib !
14. februar 2004 - 21:48
#19
Tror jeg giver op indtil jeg er øvet.. Hehhe.. Jeg ved heller ikke hvordan jeg skal linke til de libs der.
14. februar 2004 - 21:55
#20
Hvad compiler bruger du i hvilken version ?
14. februar 2004 - 22:02
#21
Jeg har det i MS visual C++
14. februar 2004 - 22:02
#22
v6.0
14. februar 2004 - 22:03
#23
Så kan jeg fortælle dig hvor du tilføjer libs !
14. februar 2004 - 22:04
#24
godt! TAK
14. februar 2004 - 22:07
#25
Project Setttings Link Object/Library modules ws2_32.lib bør gøre det !
14. februar 2004 - 22:21
#26
Jeg kan godt nok kompilere det, men jeg får ingen mails.. (og mailservern er rigtig - men hvad med password til den?)
14. februar 2004 - 22:23
#27
Den forudsætter en åben mailserver som ikke kræver authentication. Har du rettet from og to til ?
14. februar 2004 - 22:27
#28
Virker ikke.. Jeg tror jeg stopper forsøgene et stykke tid. Har du evt. en mail jeg må spørge på? Og: Jeg har rettet from og to rigtigt..
14. februar 2004 - 22:29
#29
Jep. arne_v@mail.danbbs.dk
Kurser inden for grundlæggende programmering