отправка писем
|
Ветеран Сообщения: 878 |
Профиль | Сайт | Отправить PM | Цитировать как средствами winApi "или" С++ Builder отрпавить письмо по протоколу SMTP?...
|
|
Отправлено: 23:51, 23-01-2006 |
Ветеран Сообщения: 878
|
Профиль | Сайт | Отправить PM | Цитировать забыл написать...
неообходимо отправлять в формате HTML... + в теле письма должны быть картинки... |
Отправлено: 23:52, 23-01-2006 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
lehha
Сообщения: n/a |
Если кратко то:
1. Создешь сокет. 2. Коннектишся к SNTP серверу на 25 порт Посылаешь ему последовательность команд helo - приветствие mail from: - адрес отправителя rcpt to: - получатель адрес data - после этого идет твое сообщение, кода зашлешь все что тебе надо отправляешь . quit - закрыть ссесию с SMTP сервером. На счет HTML и картинок почитай протокол MIMIE |
Отправлено: 00:40, 24-01-2006 | #3 |
Ветеран Сообщения: 878
|
Профиль | Сайт | Отправить PM | Цитировать lehha
спасибо, но я бы от исходника не отказался.. и еще интересно, как использовать в теле пиьсма картинки??? <img src="что сюда писать??"> |
Отправлено: 09:31, 24-01-2006 | #4 |
lehha
Сообщения: n/a |
писал это для отправки логов по почте правдо очень давненько думаю разберешся, на счет картинок прочитай про расширение SMTP MIME, там все подробно написано
http://www.sources.ru/protocols/smtp...ng.shtml#model http://dimas.ncn.ru/libz/lib_os/unix...s/glava2_5.htm #include <winsock2.h> #include <stdio.h> #include "shlwapi.h" #include "Windows.h" #define MAX_PACKET_SIZE 0x10000 #define INI "send.ini" #define LOG "log.txt" #define cool 0 #define bad 1 int i,n; WSADATA wsadata; SOCKET s; HOSTENT* phe; SOCKADDR_IN sa; int x1=1024; char Buffer[MAX_PACKET_SIZE]; CHAR filepath[MAX_PATH]; CHAR helo[] = {"HELO\xD\xA\x0"}; CHAR from[] = {"mail from: "}; CHAR rcpt[] = {"rcpt to: "}; CHAR dat[] = {"data\xD\xA\x0"}; CHAR end_dat[]= {"\xD\xA.\xD\xA"}; CHAR quit[] = {"quit\xD\xA\x0"}; CHAR simbols[] = {"\xD\xA\x0"}; char lpReturnedString[500]; char mess[500]; CHAR body[1024]; char integer[5]; char* FReadINI(char* section,char* key); int FReadData(char* data); void FErr(char* msg); int FReadLog(); int FSetConn(); int FSend (char* msg, SOCKET s); int FSendBody (SOCKET s); int FRecv (SOCKET s); void FErr (char* msg) { printf("error ",Buffer); } int FReadData(char* data) { if (StrStr(data,Buffer)==0) { printf(Buffer); return cool; } else { ExitProcess(0); return bad; } } char* FReadINI(char* section,char* key) { LPTSTR part; GetFullPathName(INI,MAX_PATH,filepath,&part); GetPrivateProfileString(section,key,"No Data",lpReturnedString,499,filepath); if (lstrcmp(lpReturnedString,"No Data")!=NULL) { if (sizeof(lpReturnedString)<499) ExitProcess (0); return(lpReturnedString); } ExitProcess(0); return ("No data"); } FSendBody (SOCKET s) { LPTSTR part; FILE *file; GetFullPathName(FReadINI("MAIN","path"),MAX_PATH,filepath,&part); if ((file=fopen(filepath,"r"))!=NULL) { while (!feof(file)) { fgets(body,x1,file); FSend(body,s); FSend(simbols,s); ZeroMemory(&body,sizeof(body)); } } fclose(file); return cool; } FSend (char* msg, SOCKET s) { if (send(s,msg,(int)lstrlen(msg),0)==SOCKET_ERROR) { ExitProcess(0); return bad; } else return cool; } int FRecv (SOCKET s) { memset(&Buffer,0, sizeof(Buffer)); if (recv(s,Buffer,x1,0)!=SOCKET_ERROR) return cool; else { ExitProcess(0); return bad; } } void main(void) { if (WSAStartup(0x0101, &wsadata)==SOCKET_ERROR) ExitProcess(0); s=socket(AF_INET,SOCK_STREAM,IPPROTO_IP); phe=gethostbyname(FReadINI("MAIN","server")); sa.sin_family = AF_INET; sa.sin_port=htons(atoi(FReadINI("MAIN","port"))); sa.sin_addr.S_un.S_addr=((struct in_addr *)phe->h_addr_list[0])->s_addr; i=StrToInt((LPCTSTR)FReadINI("MAIN","email")); if (connect(s,(struct sockaddr*)&sa,sizeof(sa))!=SOCKET_ERROR) { if (FRecv(s)==cool) { if (FReadData("220")==cool) { memset(&Buffer,0, sizeof(Buffer)); } while (1) { if (FSend(helo,s)==cool) { FRecv(s); if (FReadData("250")==bad) { FErr(Buffer); } } lstrcat(mess,from); lstrcat(mess,FReadINI("MAIN","mailfrom")); lstrcat(mess,simbols); if (FSend(mess,s)==cool) { memset(&mess,0,sizeof(mess)); FRecv(s); if (FReadData("250")==bad) { FErr(Buffer); ExitProcess(0); } } for (n=1;n<i+1;n++) { lstrcat(mess,rcpt); ZeroMemory(&body,sizeof(body)); lstrcat(body,"email"); itoa(n,integer,10); lstrcat(body,integer); lstrcat(mess,FReadINI("EMAIL",body)); ZeroMemory(&body,sizeof(body)); lstrcat(mess,simbols); if (FSend(mess,s)==cool) { memset(&mess,0,sizeof(mess)); FRecv(s); if (FReadData("250")==bad) { FErr(Buffer); ExitProcess(0); } } } if (FSend(dat,s)==cool) { FRecv(s); if (FReadData("354")==bad) { FErr(Buffer); ExitProcess(0); } } ZeroMemory(&body,sizeof(body)); lstrcat(body,"From:"); lstrcat(body,FReadINI("MAIN","title")); lstrcat(body,"<"); lstrcat(body,FReadINI("MAIN","mailfrom")); lstrcat(body,">\xD\xA\x0"); lstrcat(body,"Subject:"); lstrcat(body,FReadINI("MAIN","title")); lstrcat(body,"\xD\xA\x0"); lstrcat(body,"MIME-Version: 1.0\xD\xA\x0"); lstrcat(body,"Content-Type: text/plain; charset=windows-1251\xD\xA\x0Content-transfer-encoding: base64"); FSend(body,s); ZeroMemory(&body,sizeof(body)); FSendBody(s); if (FSend(end_dat,s)==cool) { FRecv(s); if (FReadData("250")==bad) { FErr(Buffer); ExitProcess(0); } } if (FSend(quit,s)==cool) { FRecv(s); if (FReadData("250")==bad) { FErr(Buffer); ExitProcess(0); } } break; } } else { printf(Buffer); memset(&Buffer,0, sizeof(Buffer)); ExitProcess(0); } } shutdown(s,1); closesocket( s ); WSACleanup(); } |
|
Отправлено: 10:16, 24-01-2006 | #5 |
Ветеран Сообщения: 878
|
Профиль | Сайт | Отправить PM | Цитировать сеньк, ща пойду разбираться....
|
Отправлено: 10:33, 24-01-2006 | #6 |
Ветеран Сообщения: 878
|
Профиль | Сайт | Отправить PM | Цитировать с img'ом разобрался...
в src - пишем просто название картинки... я просто в начале открыл в браузер message.html и посмотрел как там картинки присоединяются.. тав в src какой-то численно-буквенный код был.... вот и "испугался".. |
Отправлено: 10:50, 24-01-2006 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
отправка писем через почтовый клиент | rivera | Хочу все знать | 1 | 09-01-2010 14:05 | |
Почта - Отправка писем на определённое количество адрессов | NemesisSOAD | Программное обеспечение Windows | 0 | 02-04-2009 15:39 | |
отсылка писем | Strannick60 | Сетевые технологии | 3 | 09-11-2005 17:06 | |
Преобразование писем из ОЕ | badze | Хочу все знать | 2 | 16-09-2005 08:02 | |
читать загловки писем | IZOprogman | Хочу все знать | 7 | 19-08-2003 19:47 |
|