Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > [C/C++]Чтение електронной почты


Автор: Асоишница 19.4.2012, 01:02
Здравствуйте! У меня проблема....есть код, но он не работает, точнее не дописан. Программа должна выводить новые сообщения на ящике. Пока выдаёт только:
connect +OK
user +OK
pass+OK
STAT 
Для продолжения нажмите любую клавишу...



и всё.....я уже вторую неделю над этим бьюсь.....а нужно срочно......потому как потом ещё надо дописать, чтоб это выводтлось с окошечком и желательно ещё файлы передавало(если есть у кого что-нибудь на эту тему, поделитесь пожалуйста...)......Ну то есть это типа клиент-сервер, но через почту....Код  для отправки уже есть ..Очень нужна помощь.......



вот текст программы:


Код

#include "stdafx.h" 
#include <stdio.h>
#include <WinSock2.h>
#include <string>
#include <fstream>
#include <iostream>
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "wsock32.lib")
//Prototypen
int startWinsock(void);

int _tmain(int argc, _TCHAR* argv[])
{
    char buf[256];
    long rc;
    SOCKET s;
    SOCKADDR_IN addr;
  rc=startWinsock();
  if(rc!=0)
  {
    printf("ERROR: startWinsock, fehler code: %d\n",rc); // failed
  }
  else
  {
    printf("Winsock gestartet!\n");
  }
  s=socket(AF_INET,SOCK_STREAM,0);
if(s==INVALID_SOCKET)
{
  printf("ERROR: Der Socket konnte nicht erstellt werden, fehler code:%d\n",WSAGetLastError()); // Failed
  return 1;
}
else
{
  printf("Socket erstellt!\n");
}

    LPHOSTENT lpHostEntry;
    lpHostEntry = gethostbyname("pop.mail.ru");
    if(!lpHostEntry)
    {
        printf("Finding mail server");
    }
 memset(&addr,0,sizeof(SOCKADDR_IN)); 
addr.sin_family=AF_INET;
addr.sin_port=htons(110); 
addr.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list);
rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));

if(rc==SOCKET_ERROR)
{
  printf("ERROR: connect gescheitert, fehler code:%d\n",WSAGetLastError()); // failed
}
else
{
  printf("Connect to mail: +OK\n");
}
std::cout<<std::endl;
ZeroMemory(buf,256);
recv(s,buf,sizeof(buf),0);
std::cout << buf<< std::endl;
/*
strcpy(buf, "auth\r\n");
send(s,buf,strlen(buf),0);
std::cout << buf;
ZeroMemory(buf,256);
int Data=recv(s,buf,256,0);
std::cout << buf;*/

strcpy(buf, "user asoishnica@mail.ru\r\n");
send(s,buf,strlen(buf),0);
std::cout << buf;
ZeroMemory(buf,256);
recv(s,buf,sizeof(buf),0);
std::cout << buf<< std::endl;
strcpy(buf, "pass ********\r\n");
send(s,buf,sizeof(buf),0);
std::cout << buf;
ZeroMemory(buf,256);
recv(s,buf,sizeof(buf),0);
std::cout << buf<< std::endl;

ZeroMemory(buf,256);
strncpy_s(buf,256, "stat\r\n",6);
send(s, buf, strlen(buf), 0);
std::cout<<buf;
ZeroMemory(buf,256);
recv(s, buf, strlen(buf), 0);
std::cout<<buf<<"\n\n";


//if(nData==0 || nData == SOCKET_ERROR) std::cout<<"Recv Error"<<endl;

closesocket(s);
WSACleanup();
system("pause");
return 0;
}

int startWinsock(void)
{
  WSADATA wsa;
  return WSAStartup(MAKEWORD(1,1),&wsa);
}

Автор: Олег2005 19.4.2012, 10:37
Чисто поверхностный взгляд говорит об одной ошибке
(MAKEWORD(1,1),&wsa);
Используется спецификация 1.1 - а подключены сразу две статические библиотеки

#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "wsock32.lib")

Для 1.1 нужна только последняя библиотека.
Подключение двух разных может при работе вызывать конфликт. 
И еще
Так что у вас получается? Виснет? Где виснет? Код ошибки какой? Или что?

Автор: feodorv 19.4.2012, 14:09
Цитата(Асоишница @  19.4.2012,  02:02 Найти цитируемый пост)
77: send(s,buf,sizeof(buf),0);

Попробуйте в этом месте не sizeof(buf), а stlren(buf)
(даже если не поможет, это правильнее, но я думаю, что поможет smile )

Автор: Асоишница 19.4.2012, 16:44
feodorv, не помогло((((


Олег2005, тоже не помогло((((. Оно запускается.......

это пишет при выполнении:
"Чтение почты.exe": Загружено: "D:\Visual Studio 2010\Projects\Чтение почты\Debug\Чтение почты.exe", Символы загружены.
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\ntdll.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\kernel32.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\KernelBase.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\ws2_32.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\msvcrt.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\rpcrt4.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\sspicli.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\cryptbase.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\sechost.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\nsi.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\msvcr100d.dll", Символы загружены.
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\msvcp100d.dll", Символы загружены.
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\mswsock.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\user32.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\gdi32.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\lpk.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\usp10.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\advapi32.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\imm32.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\msctf.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Program Files (x86)\Searchqu Toolbar\Datamngr\datamngr.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\wtsapi32.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\dbghelp.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Выгружено: "C:\Program Files (x86)\Searchqu Toolbar\Datamngr\datamngr.dll"
"Чтение почты.exe": Выгружено: "C:\Windows\SysWOW64\dbghelp.dll"
"Чтение почты.exe": Выгружено: "C:\Windows\SysWOW64\wtsapi32.dll"
"Чтение почты.exe": Загружено: "C:\Program Files (x86)\Searchqu Toolbar\Datamngr\IEBHO.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\dbghelp.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Выгружено: "C:\Program Files (x86)\Searchqu Toolbar\Datamngr\IEBHO.dll"
"Чтение почты.exe": Выгружено: "C:\Windows\SysWOW64\dbghelp.dll"
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\WSHTCPIP.DLL", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\nlaapi.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\NapiNSP.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\pnrpnsp.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\dnsapi.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\winrnr.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Program Files (x86)\Common Files\microsoft shared\Windows Live\WLIDNSP.DLL", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\psapi.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\shlwapi.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\wshbth.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\IPHLPAPI.DLL", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\winnsi.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\FWPUCLNT.DLL", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\rasadhlp.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Выгружено: "C:\Windows\SysWOW64\WSHTCPIP.DLL"
"Чтение почты.exe": Выгружено: "C:\Windows\SysWOW64\nlaapi.dll"
"Чтение почты.exe": Выгружено: "C:\Windows\SysWOW64\NapiNSP.dll"
"Чтение почты.exe": Выгружено: "C:\Windows\SysWOW64\pnrpnsp.dll"
"Чтение почты.exe": Выгружено: "C:\Windows\SysWOW64\winrnr.dll"
"Чтение почты.exe": Выгружено: "C:\Program Files (x86)\Common Files\microsoft shared\Windows Live\WLIDNSP.DLL"
"Чтение почты.exe": Выгружено: "C:\Windows\SysWOW64\shlwapi.dll"
"Чтение почты.exe": Выгружено: "C:\Windows\SysWOW64\psapi.dll"
"Чтение почты.exe": Выгружено: "C:\Windows\SysWOW64\wshbth.dll"
"Чтение почты.exe": Выгружено: "C:\Windows\SysWOW64\FWPUCLNT.DLL"
"Чтение почты.exe": Загружено: "C:\Windows\SysWOW64\apphelp.dll", Невозможно найти или открыть файл PDB
"Чтение почты.exe": Загружено: "ImageAtBase0x49e20000", Загрузка отключена параметром включения/исключения.
"Чтение почты.exe": Выгружено: "ImageAtBase0x49e20000"
Поток 'Поток Win32' (0x948) завершился с кодом -1073741510 (0xc000013a).
Программа "[1612] Чтение почты.exe: Машинный код" завершилась с кодом 0 (0x0).

вот что выводит при запуске:

http://s1.ipicture.ru/uploads/20120419/wRLH0NFn.png

Автор: feodorv 19.4.2012, 17:20
Цитата(Асоишница @  19.4.2012,  17:44 Найти цитируемый пост)
feodorv, не помогло((((

Понятно...

Цитата(Асоишница @  19.4.2012,  02:02 Найти цитируемый пост)
Пока выдаёт только:
connect +OK
user +OK
pass+OK
STAT 


Цитата(Асоишница @  19.4.2012,  02:02 Найти цитируемый пост)
ZeroMemory(buf,256);
strncpy_s(buf,256, "stat\r\n",6);
send(s, buf, strlen(buf), 0);
std::cout<<buf;
ZeroMemory(buf,256);
recv(s, buf, strlen(buf), 0);
std::cout<<buf<<"\n\n";


Ха, тогда наоборот: recv(s, buf, strlen(buf), 0); заменить на recv(s, buf, sizeof(buf), 0);

Ну и отсутствии цикла чтения:
Код

strncpy_s(buf,256, "stat\r\n",6);
send(s, buf, strlen(buf), 0);
std::cout<<buf;

for( ;; )
{
  int bytes = recv(s, buf, sizeof(buf), 0);
  if( bytes <= 0 ) break;
 // анализ на наличие конца сообщения (не помню pop3)
}


Ну или что-то в этом роде с построчным чтением из сокета...

Автор: Асоишница 19.4.2012, 21:36
feodorv, пасиб))))уже показывает сколько писем в почтовом ящике и размер их в байтах...но в связи с этим вопрос: как сделать так, чтобы учитывались только новые? И в идеале надо будет, чтоб показывало только то, что было послано из самой программки, т.е. без учёта "левых" сообщений. Это как-то можно реализовать? потому как пока в голову приходит только регистрация типа "Введите имя латиницей", программка сама допишет @mail.ru  и пользователь даже знать не будет, что у него почтовый ящик есть....

Автор: Олег2005 19.4.2012, 23:58
Цитата(feodorv @  19.4.2012,  16:20 Найти цитируемый пост)
Ха, тогда наоборот: recv(s, buf, strlen(buf), 0); заменить на recv(s, buf, sizeof(buf), 0);

Сколько раз встречал эту ошибку - во многих проектах.
И ошибка была именно в применении strlen() вместо sizeof()

Автор: feodorv 21.4.2012, 13:05
Цитата(Асоишница @  19.4.2012,  22:36 Найти цитируемый пост)
но в связи с этим вопрос: как сделать так, чтобы учитывались только новые? 

Ну, ээээ, не помню я протокола pop3, но, по-моему, нудно просматривать заголовки сообщений (есть такая команда) и выискивать заголовок, в котором стоит new (не помню имя этого заголовка(((()

Цитата(Асоишница @  19.4.2012,  22:36 Найти цитируемый пост)
И в идеале надо будет, чтоб показывало только то, что было послано из самой программки, т.е. без учёта "левых" сообщений. Это как-то можно реализовать? потому как пока в голову приходит только регистрация типа "Введите имя латиницей", программка сама допишет @mail.ru  и пользователь даже знать не будет, что у него почтовый ящик есть.... 

Ну, можно subject какой-то особый ввести, плюс сразу возникает вопрос шифрования...

А зачем такие сложности?

Автор: Асоишница 21.4.2012, 13:37
Цитата(feodorv @ 21.4.2012,  13:05)
А зачем такие сложности?

ну просто это задание по курсовому....и оно звучит не "считывать и отправлять почту", а "создание клиент-серверной системы на основе электронной почты", т.е. что-то вроде своей аськи. я на 1 курсе

Автор: feodorv 22.4.2012, 03:00
Цитата(Асоишница @  21.4.2012,  14:37 Найти цитируемый пост)
"создание клиент-серверной системы на основе электронной почты"

Хорошо звучит)))

Тогда вот это лишнее:
Цитата(Асоишница @  19.4.2012,  22:36 Найти цитируемый пост)
потому как пока в голову приходит только регистрация типа "Введите имя латиницей", программка сама допишет @mail.ru  и пользователь даже знать не будет, что у него почтовый ящик есть.... 

Во-первых, фиг програмно зарегистрируешься. Во-вторых, имя уже может быть занято.
Самое простое - потребовать от пользователя специального почтового аккаунта для работы с сервером. Т.е. и имя, и пароль уже должны существовать и вводиться пользователем в начале работы с клиентом.
А у сервера будет будет свой особый емайл? Или каждый клиент может быть и сервером?
А что (хоть приблизительно) должен делать сервер? И какая польза будет клиенту?)))

Гм... Надеюсь, дело на закончится рассылкой спама? smile 

Автор: Асоишница 22.4.2012, 13:12
Цитата(feodorv @ 22.4.2012,  03:00)
имя уже может быть занято.


как-то не подумала об этом......

Добавлено через 11 минут и 5 секунд
Цитата(feodorv @ 22.4.2012,  03:00)
А у сервера будет будет свой особый емайл? Или каждый клиент может быть и сервером?
А что (хоть приблизительно) должен делать сервер? И какая польза будет клиенту?)))

препод кроме темы ничего толком не говорил.....просто "делайте"....
у меня пока 2 проекта: один отправляет почту, другой- принимает(над вторым ещё работаю)...всё  это планируется оформить не в консольке....типа отправить и получить письмо, а если будет время, то попробую с прикреплением файлов(правда пока не знаю, чё там и как)....Хочу отойти от email-а, т.е. чтоб был виден не он, а просто имя......Но ещё одна проблемка......допустим, я сначала решила проверить почту, а потом приложение......и тут косяк: письмо с приложения у меня на почте.......Думала, может, сделать так, чтоб передать можно было, как в Скайпе: только когда пользователь онлайн.......но с другой стороны.... а если надо оставить пользователю сообщение типа "Позвони, когда будешь дома"....даже не знаю, что делать.......

Автор: feodorv 22.4.2012, 18:09
Цитата(Асоишница @  22.4.2012,  14:12 Найти цитируемый пост)
препод кроме темы ничего толком не говорил.....просто "делайте"....

Мне кажется, что с задачей следует определиться. Кто что кому шлёт и зачем.
А то какая-то абстракция получается: ну научимся отправлять/принимать почту, а толку?

Насколько жёсткие условия клиент-серверности? Выделенный сервер нужен, или любой клиент - сервер?
Может, придумать себе емайл-библиотеку: на сервере лежит набор книг в текстовом виде (тогда и вложений не придётся делать, или они нужны?)
Пользователь шлёт запрос: хочу себе книгу номер 8, и она ему присылается. Можно ввести список подписчиков (чтобы не абы кому присылать), можно нет. Плюс команда на посылку каталога книг (а его хранить в текстовом файле в простом формате: номер имя-файла автор-название-книги). Напридумывать можно многое (даже емайл-магазин), но обмен сообщениями типа "Позвони, когда будешь дома" как-то меня не привлекает... Есть же СМС...

Цитата(Асоишница @  22.4.2012,  14:12 Найти цитируемый пост)
Думала, может, сделать так, чтоб передать можно было, как в Скайпе: только когда пользователь онлайн.......

А как иначе? Даже телефоны могут быть вне зоны доступа, тогда как СМС слать?

Автор: Асоишница 23.4.2012, 19:38
Цитата(feodorv @  22.4.2012,  18:09 Найти цитируемый пост)
Насколько жёсткие условия клиент-серверности? Выделенный сервер нужен, или любой клиент - сервер?


он тонко намекнул, что ему всё равно, как мы это сделаем....главное, чтоб работало


Цитата(feodorv @  22.4.2012,  18:09 Найти цитируемый пост)
Может, придумать себе емайл-библиотеку: на сервере лежит набор книг в текстовом виде (тогда и вложений не придётся делать, или они нужны?)Пользователь шлёт запрос: хочу себе книгу номер 8, и она ему присылается. Можно ввести список подписчиков (чтобы не абы кому присылать), можно нет. Плюс команда на посылку каталога книг (а его хранить в текстовом файле в простом формате: номер имя-файла автор-название-книги). 


т.е. что-то вроде приложения для себя сделать????типа позакидывать себе кучу книг и "работать библиотекарем"?? или я всё буквально поняла?.....что-то типа коммерческого проекта создать? кстати, неплохой вариант......

Автор: Олег2005 23.4.2012, 20:33
Цитата(Асоишница @  23.4.2012,  18:38 Найти цитируемый пост)
он тонко намекнул, что ему всё равно, как мы это сделаем....главное, чтоб работало

Увы.
Таких преподов я видел на своей жизни.
Они не понимают даже того, что они пытаются "преподать"
Вам не повезло. smile 

Автор: feodorv 23.4.2012, 23:13
Цитата(Олег2005 @  23.4.2012,  21:33 Найти цитируемый пост)
Увы.

+1


Цитата(Асоишница @  23.4.2012,  20:38 Найти цитируемый пост)
т.е. что-то вроде приложения для себя сделать????

Ну, скорее для преподавателя)))) Чтобы курсовой сдать)))) Для себя - это скорее ответы на билеты хранить по номерам, и по запросу по емайлу их присылать запрашивающему))))


Цитата(Асоишница @  23.4.2012,  20:38 Найти цитируемый пост)
типа позакидывать себе кучу книг и "работать библиотекарем"??

Для простоты (лишь бы работало) достаточно создать статическую (неизменяемую) библиотеку текстов (один раз!). Тогда "работать библиотекарем" будет серверная программа, которую ещё надо написать smile На клиенте будет находится статический же список этих текстов с возможность выбора из списка. Остальное должна сделать клиентская программа (послать запрос, соединившись с майл-сервером, и ожидать ответа, периодически просматривая почту). Как-то так  smile 


Цитата(Асоишница @  23.4.2012,  20:38 Найти цитируемый пост)
что-то типа коммерческого проекта создать?

 smile Направление мыслей понятно))) Вряд ли для первого курса стоит задумываться о коммерческих продуктах (хотя, кто знает))))

Автор: Асоишница 24.4.2012, 14:01
Цитата(Олег2005 @  23.4.2012,  20:33 Найти цитируемый пост)
Увы.Таких преподов я видел на своей жизни.Они не понимают даже того, что они пытаются "преподать"

не......он вроде как понимает,разве только не все нюансы помнит(просто преподавание- далеко не основная его работа - у него свой бизнес)

Цитата(feodorv @  23.4.2012,  23:13 Найти цитируемый пост)
Направление мыслей понятно))) Вряд ли для первого курса стоит задумываться о коммерческих продуктах (хотя, кто знает))))


ну никто ж не запрещает совершенствовать мою прогу в будущем)))))вдруг от нечего делать)

Автор: Alexoid 16.5.2012, 09:35
Асоишница, Здравствуйте !!!!
Хотелось бы узнать в каком университете задают на первом курсе создание клиент-серверных приложений на системном уровне, тоесть задание просят именно на с++ реализовать или язык выбирается студентом, я просто к тому, что может этот проект реализовать на С# или Delphi, там компонентами можно накидать вполне функциональное приложение не вникая в системные примудрости!!!!

------

Автор: Асоишница 5.6.2012, 19:34
Alexoid, ну...вообще на Си надо...=)))нет ну можно хоть на Паскале, хоть на чём  угодно- главное потом доказать, что сам писал...
ну да впрочем я уже сегодня сдала курсач))))

Автор: feodorv 5.6.2012, 20:05
Цитата(Асоишница @  5.6.2012,  20:34 Найти цитируемый пост)
впрочем я уже сегодня сдала курсач)))) 

Мои поздравления!!!
Чем удалось обойтись? smile 

Автор: Асоишница 6.6.2012, 14:48
Цитата(feodorv @  5.6.2012,  20:05 Найти цитируемый пост)
Чем удалось обойтись?


сделана отправка на почту и чтение письма....правда с кодировкой проблема когда слов много.....пробовала разные методы- ничего не работает((((

Автор: Alexoid 9.6.2012, 11:06
Мои поздравления, Асоишница!!!!
 smile  smile 
Цитата

сделана отправка на почту и чтение письма....правда с кодировкой проблема когда слов много.....пробовала разные методы- ничего не работает((((

При отсылке письма рекомендую шифровать текст base64, а при приёме раскодироват, правда чтоб остальные почтовые клиенты поняли содержание текста, в служебных раделах письма необходино указать, что используете соответствующее щифрование.
--------
Ах да, наверно у Вас приложение консольное, и текст письма с консоли кирилицу вводите, тогда рекомендую unsigned char *  и функцию OemToAnsi в связке - для нормализации кодировки.

Автор: Асоишница 11.6.2012, 16:53
Цитата(Alexoid @  9.6.2012,  11:06 Найти цитируемый пост)
используете соответствующее щифрование.

как указывать?

Цитата(Alexoid @  9.6.2012,  11:06 Найти цитируемый пост)
наверно у Вас приложение консольное

я использовала mfc-приложение

Автор: Alexoid 13.6.2012, 14:41
Хорошо продолжим, тему ещо немножко))) smile  smile 
Я к сожалению не могу знать на сколько далеко вы зашли в изучении MIME  стандарта: http://ru.wikipedia.org/wiki/MIME
А вот тут описано как выставить кодировку текста письма в MIME-стандарте -http://kunegin.narod.ru/ref2/email/mime03.htm,
здесь указана строка по которой почтовые клиенты опредляют "как читать письмо":
Код

Content-Type: text/plain; charset=ISO-8859-1
     Content-transfer-encoding: base64

Здесь указана старая кодировка ISO-8859-1, опять-же глянтье в википедии, а Вам лучше с поддержкой кириллицы использовать - "koi8-r", или UTF-8.
http://kunegin.narod.ru/ref2/email/ - тут подробно стандарты описаны, но много воды, в общем для общего развития.
Я понимаю, что конкретики для быстрого решения вопроса я не дал, но если интересно изучить каким образом можно стандартизировать Электронное письмо чтобы остальные клиенты его понимали - флаг в руки.
Например у меня для работы целый класс разработан, правда немного урезанный(только необходимый функционал реализован).

Автор: Асоишница 13.6.2012, 23:19
Alexoid, спасибо большое)почитаю на досуге, а то сейчас сессия)))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)