|
|
|
| Как отправить письмо через SMTP? | |
|
|
|
|
15.7 Кб |
|
|
для: Fddd
(21.10.2007 в 21:46)
| | С использованием ATL
Да и вообще требует IIS | |
|
|
|
|
2 Кб |
|
|
для: Fddd
(21.10.2007 в 21:46)
| | А этот вариант я еще не пробывал попробуешь расскажеш как он рабочий или нет | |
|
|
|
|
|
|
|
для: like-nix
(22.10.2007 в 23:53)
| | Спасибо.
Поправьте, так как просто неграмотно по принципу разобрал.
Вот что собственно получилось.
Письмо доходит.
#include <iostream.h>
#include <winsock.h>
#define SMTP_PORT 25
#define SMTP_ADDR "213.180.204.38" //IP - Яндекс сервиса
int main()
{
SOCKET servsocket;
WSADATA WSAData;
struct sockaddr_in socketaddr;
/* Инициализация библиотеки Ws2_32.dll */
if(WSAStartup(MAKEWORD(1, 1), &WSAData) != 0) return FALSE;
/* Команды SMPT */
char *MailMessage[] = {};// -Тут массив SMTP команд
/* Открыть Сокет */
servsocket = socket(PF_INET, SOCK_STREAM, 0);
if (servsocket == INVALID_SOCKET)
{
cout << "Error Create Socket\n";
exit(1);
} else {
cout << "OK Create Socket\n";
}
/* Заполняем структуру sockaddr_in */
socketaddr.sin_family = AF_INET;
socketaddr.sin_addr.s_addr = inet_addr(SMTP_ADDR);
socketaddr.sin_port = htons(SMTP_PORT);
/* Соединяемся с хостом */
if (connect(servsocket,(PSOCKADDR)&socketaddr, sizeof(socketaddr)))
{
cout << "Error Connect\n";
exit(1);
} else {
cout << "OK Connect\n";
}
/* ОТПРАВКА КОМАНД SMTP (MailMessage)*/
int iLength;
int iMsg = 0;
int iEnd = 0;
BYTE sBuf[4096];
do {
iLength = recv(servsocket, (LPSTR)sBuf+iEnd, sizeof(sBuf)-iEnd, 0);
iEnd += iLength;
sBuf[iEnd] = '\0';
send(servsocket, (LPSTR)MailMessage[iMsg], strlen(MailMessage[iMsg]), 0);
iMsg++;
} while(MailMessage[iMsg]);
cout << sBuf << endl;
/* Закрыть Сокет*/
closesocket(servsocket);
/* Деинициализация библиотеки Ws2_32.dll */
WSACleanup();
return 0;
}
|
| |
|
|
|
|
|
|
|
для: Fddd
(23.10.2007 в 22:12)
| | Всё с отправкой разобрался. | |
|
|
|