|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
отправка писем
|
|
Ветеран Сообщения: 878 |
как средствами 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 | |
|