email verschicken über smtp
-
Was funzt denn nich ? - Prüf doch mal was der Server sagt - Der meldet sich normalerweise wenn er was nicht magt und die Mail nicht senden will...
-
Mein Quellcode:
#include <windows.h>
#include <winsock.h>
#include <stdio.h>
#include <conio.h>
#include <mapi.h>int main()
{
struct sockaddr_in server;SOCKET sock;
char buff[1024],
command[1024];unsigned int empfangen,
i;char *smtp[] = {
"HELO mail.web.de\r\n", // Dummy
"MAIL FROM:bennyvorwalder@web.de\r\n", // Absender
"RCPT TO:BennyVorwalder@web.de\r\n", // Empfaenger
"DATA\r\n",
"FROM: bennyvorwalder@web.de\r\nTO: BennyVorwalder@web.de>\r\nSUBJECT: Eine Test-Mail\r\n",
"Diese Mail wurde mit den Windows-Socket-Funktionen versendet!!!\r\n.\r\n",
"QUIT\r\n"};
short wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD (1, 1);
WSAStartup (wVersionRequested, &wsaData);
sock = socket( AF_INET, SOCK_STREAM, 0);
server.sin_family = AF_INET;
server.sin_port = htons(25);
server.sin_addr.s_addr = inet_addr("217.72.192.178"); // Nur Dummy, im Proggi steht richtige Adresseconnect(sock, (struct sockaddr
&server, sizeof(struct sockaddr_in));
for(i = 0; i <= 6; i++)
{
strcpy(command, smtp[i]);
printf("%s\n", command);
send(sock, command, lstrlen(command), 0); // Command senden
empfangen = recv(sock, buff, sizeof(buff), 0); // Antwort empfangen muß nicht unbedingt sein
printf("%s\n\n", buff);
buff[empfangen] = '\0'; // String terminieren
}closesocket(sock);
WSACleanup();
getch();
return 0;
}Und dass was mail.web.de sagt:
HELO mail.web.de
220 mailgate2.dlan.cinetic.de ESMTP Sendmail 8.12.10/8.12.10/WEBDE 0.6; Thu, 29
Jan 2004 17:09:54 +0100MAIL FROM:bennyvorwalder@web.de
250 mailgate2.dlan.cinetic.de Hello ACB127E4.ipt.aol.com [172.177.39.228], pleas
ed to meet you
4 +0100250 2.1.0 bennyvorwalder@web.de... Sender ok
pt.aol.com [172.177.39.228], pleased to meet youDATA
550 5.7.1 BennyVorwalder@web.de... Relaying denied
.com [172.177.39.228], pleased to meet youFROM: bennyvorwalder@web.de
TO: BennyVorwalder@web.de>
SUBJECT: Eine Test-Mail503 5.0.0 Need RCPT (recipient)
. Relaying deniedDiese Mail wurde mit den Windows-Socket-Funktionen versendet!!!
.500 5.5.1 Command unrecognized: "FROM: bennyvorwalder@web.de"
500 5.5.1 Command unrecognized: "TO: BennyVorwalder@web.de>"
500 5.5.1 Command unrecognized: "SUBJECT: Eine Test-Mail"QUIT
500 5.5.1 Command unrecognized: "Diese Mail wurde mit den Windows-Socket-Funktio
nen versendet!!!"
500 5.5.1 Command unrecognized: "."
ommand unrecognized: "SUBJECT: Eine Test-Mail"
-
nimm das empfangen aus der while schleife raus (nach dem senden der DATA, empfängst du erst mal nichts bis du QUIT sendest... deswegen warscheinlich geht es nicht.) und ich glaube die "MAIL FROM" und "RCPT TO" da mussen die emailadressen in "<>" stehen also z.b. "MAIL FROM: test@test.de"
mfg
toom
-
"Relaying denied" - der web.de mailserver will wohl vorher noch deinen benutzernamen und passwort haben...
-
toom schrieb:
nimm das empfangen aus der while schleife raus (nach dem senden der DATA, empfängst du erst mal nichts bis du QUIT sendest... deswegen warscheinlich geht es nicht.) und ich glaube die "MAIL FROM" und "RCPT TO" da mussen die emailadressen in "<>" stehen also z.b. "MAIL FROM: test@test.de"
mfg
toomhi toom! willst du die source von mir habn wo alles fix und fertig zum email versenden?? meld dich bei mir!!! man kann auch files mitschicken;-)
cu!
-
Surfman schrieb:
hi toom! willst du die source von mir habn wo alles fix und fertig zum email versenden??
nein, ich habe lafenden code (incl. MIME). aber danke für dein angebot.
-
aso...dann schick mir mal deinen code bitte, mag mal schauen wie du das gelöst hast! an: surfman19@gmx.at
thxcu
-
Genau! Und wenn du schon mal dabei bist/warst: nirsaja@web.de
-
ist unterwegs...
-
@Surfman
Kannst du mir das Prog. bitte auch schicken? BennyVorwalder@web.de
-
ok ich schicke;-) comments erwünscht;-)
-
bei so vielen nachfragen poste ich den code :
#include <windows.h> #include <winsock.h> #pragma comment (lib, "wsock32.lib") #define HELO_MAX 4 BOOL fHeloSenden (SOCKET) ; BOOL fBodySenden (SOCKET) ; BOOL fQuitSenden (SOCKET) ; int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){ struct sockaddr_in server ; SOCKET sock ; char command[200], buff[100], szHost[] = "mail.gmx.net" ; unsigned int iFor, iEmpfangen ; short wVersionRequested ; WSADATA wsaData ; struct hostent *he ; ZeroMemory (&server, sizeof (sockaddr_in)) ; wVersionRequested = MAKEWORD (1, 1) ; WSAStartup (wVersionRequested, &wsaData) ; if (!(he = gethostbyname (szHost))){ MessageBox (NULL, "gethostbyname", "Fehler", NULL) ; return 1 ; } if (he->h_addrtype != AF_INET){ MessageBox (NULL, "AF_INET", "Fehler", NULL) ; return 2 ; } if (!he->h_addr_list[0]){ MessageBox (NULL, "he->h_addr_list[0]", "Fehler", NULL) ; return 3 ; } server.sin_family = AF_INET ; server.sin_port = htons (25) ; server.sin_addr = *(struct in_addr*) he->h_addr_list[0] ; if ((sock = socket (PF_INET, SOCK_STREAM, 0)) == -1){ MessageBox (NULL, "socket", "Fehler", NULL) ; return 4 ; } if (connect (sock, (struct sockaddr*) &server, sizeof (struct sockaddr)) < 0){ MessageBox (NULL, "connect", "Fehler", NULL) ; return 5 ; } fHeloSenden (sock) ; fBodySenden (sock) ; fQuitSenden (sock) ; closesocket (sock) ; WSACleanup () ; return 0 ; } BOOL fHeloSenden (SOCKET sock){ char *smtp[] = { "HELO tescik\r\n", "MAIL FROM: <email@email.de>\r\n", "RCPT TO: <email@email.de>\r\n", "DATA\r\n", "From: ich\r\nTo: ich\r\nSubject: Test\r\n"} ; char command[100], buff[100] ; unsigned int iEmpfangen = 0, iFor = 0 ; for(iFor = 0; iFor <= HELO_MAX; iFor++){ strcpy (command, smtp[iFor]) ; send (sock, command, lstrlen (command), 0) ; if (iFor != HELO_MAX){ iEmpfangen = recv (sock, buff, sizeof (buff), 0) ; buff[iEmpfangen] = '\0' ; MessageBox (NULL, (LPTSTR) buff, "empfang", NULL) ; } } return 0 ; } BOOL fBodySenden (SOCKET sock){ char *smtp[] = { "Mime-Version: 1.0\r\n", "Content-Type: multipart/mixed; boundary=\"IstEineID\"\r\n\r\n", "--IstEineID\r\n", "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n", "Content-Transfer-Encoding: 7bit\r\n\r\n", "Teil 1 der email\r\n", "--IstEineID\r\n", "Content-Type: text/plain; charset=\"US-ASCII\"\r\n\r\n", "Teil 2 der email (so zu sagen anhang... hehehe)\r\n", "--IstEineID--"} ; char command[100], buff[100] ; unsigned int iEmpfangen = 0, iFor = 0 ; for(iFor = 0; iFor <= 9; iFor++){ strcpy (command, smtp[iFor]) ; send (sock, command, lstrlen (command), 0) ; } return 0 ; } BOOL fQuitSenden (SOCKET sock){ char *smtp[] = { "\r\n.\r\n", "QUIT\r\n", "QUIT\r\n"} ; char command[100], buff[100] ; unsigned int iEmpfangen = 0, iFor = 0 ; for(iFor = 0; iFor <= 2; iFor++){ strcpy (command, smtp[iFor]) ; send (sock, command, lstrlen (command), 0) ; iEmpfangen = recv (sock, buff, sizeof (buff), 0) ; buff[iEmpfangen] = '\0' ; MessageBox (NULL, (LPTSTR)buff, "empfang", NULL) ; } return 0 ; }
mfg
toom