Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как отправить письмо? 
V
    Опции темы
CDell
Дата 21.10.2007, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 23.6.2007

Репутация: нет
Всего: нет



Как мне на C++ отправить письмо на ящик?
Как я почитал то это делаеться через протокол smtp. 
Ни у кого нету тупенького маленького примерчика?
Желательно без использования MFC.

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


Это сообщение отредактировал(а) CDell - 28.10.2007, 10:50
PM MAIL   Вверх
FREEDEV
Дата 21.10.2007, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 6.3.2007
Где: Украина->Одесс а

Репутация: нет
Всего: 3



--------------------
Microsoft Windows Visla ©
PM MAIL   Вверх
CDell
Дата 22.10.2007, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 23.6.2007

Репутация: нет
Всего: нет



Спасибоо за ссылочки.

У меня проблема: я хотел поработать сначало через TelNet с SMTP, и чего то не получаеться.
Сервер mail.ru, требует авторизации. Поэтому регистрируем почтовый ящик на mail.ru.
Логин: neefa
Пароль: neefa
Нам нужно перевести логин и пароль в Base64: bmVlZmE
Теперь запускаю telnet. И пишу:
u:o smtp.mail.ru 25
s:220 mail.ru ESMTP Mon, 22 Oct 2007 21:24:20 +0400
u:EHLO server
s:250-mx6.mail.ru Hello server [ip адрес ]
-БЛА-БЛА-БЛА-
u:AUTH LOGIN
s:334 пишит "Логин:"в закодированном Base64)
u:bmVlZmE
s: 501 Invalid base64 data

Почему такая ошибка?
И как открыть сокет и вставить туда эти команды?
PM MAIL   Вверх
jonie
Дата 22.10.2007, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



логин используется на майл ру вроде как в формате [email protected]
соотв и base64 такой же...
возьми сниффер и погляди на почтовики 8)


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
CDell
Дата 23.10.2007, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 23.6.2007

Репутация: нет
Всего: нет



Цитата(jonie @  22.10.2007,  22:21 Найти цитируемый пост)
логин используется на майл ру вроде как в формате [email protected]

Кстате возможно.  smile 
Цитата

возьми сниффер и погляди на почтовики 8) 

тоже идея  smile 

На mail.ru вроде какие-то не стандартные изменения недавно произошли.
Авторизация и отпрака почты удачно прошла на сервере yandex.ru(Там я тоже зарегистрировал такой же почтовик).


Так, теперь задача состоит в том чтобы всё это проделать на C++.
Как мне создать, открыть сокет(или что там) и запихнуть туда эти команды?

Это сообщение отредактировал(а) CDell - 23.10.2007, 19:24
PM MAIL   Вверх
jonie
Дата 23.10.2007, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



в прилагаемом атаче малюсенький класс (мною правда немного модифицированный) + base64
Код

SocketClient sc(szHostName,TCP_SMTP_PORT);
sc.SendLine(szBuffer);
sc.ReceiveLine();

//base64
string b64data;
ifstream in(szAttach,ios::binary);
noskipws(in);
base64::encode(istream_iterator<unsigned char>(in),
        istream_iterator<unsigned char>(),
        back_inserter(b64data));

тебе, думаю, хватит )

Присоединённый файл ( Кол-во скачиваний: 23 )
Присоединённый файл  _tc.rar 3,58 Kb


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
CDell
Дата 24.10.2007, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 23.6.2007

Репутация: нет
Всего: нет



Спасибо.
Мне бы никто не мог написать или дать ссылку на русскоязычную статью где совсем по тупому открываеться сокет и передаётся команды SMTP.
Тупо письмо чтобы передалось. Без никакой обработки ошибок, просто, тупо в лоб =)

Могу попробовать начать. Поправьте, так как просто неграмотно по принципу разобрал


Код

#define SMTP_PORT 25 
#define SMTP_ADDR "213.180.204.38"

SOCKET Socket;
struct sockaddr_in smtp_address; 

char *MailMessage[] =
{
"EHLO myserv\r\n",
"AUTH LOGIN",
"bmVlZmE",
"bmVlZmFuZWVmYQ",
"MAIL FROM:<[email protected]>",
"RCPT TO:<[email protected]>\r\n",
"DATA\r\n",
"Hello world\r\n\r\n.\r\n",
"QUIT\r\n",
NULL
};


Socket = socket(PF_INET, SOCK_STREAM, 0); //открываем сокет, вроде как...
smtp_address.sin_family = AF_INET;
smtp_address.sin_addr.s_addr = inet_addr(SMTP_ADDR); //SMTP_ADDR - IP адрес mail сервера
smtp_address.sin_port =htons(SMTP_PORT); //SMTP_PORT - Порт подключения

 


А дальше собственно я не совсем разобрался.


Это сообщение отредактировал(а) CDell - 24.10.2007, 12:46
PM MAIL   Вверх
jonie
Дата 25.10.2007, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



а нафиг ? яж дал класс который оберточный над сокетом. Просто юзай его и BeHappy()
А если хочется то почему бы не поглядеть как оно работает ?)


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
CDell
Дата 27.10.2007, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 23.6.2007

Репутация: нет
Всего: нет



С отправкой текста я разобрался.
Теперь нужно с текстом передать файл.
Какие для этого нада писать SMTP команды? Вот написал, но письмо приходит пустое.
Код

    /* Команды SMPT */
    char *MailMessage[] =
    {
         //Авторизация и все дела 
        "EHLO neefa\r\n",
        "AUTH LOGIN\r\n",
        "bmVlZmE\r\n",
        "bmVlZmFuZWVmYQ\r\n",
        "MAIL FROM:<[email protected]>\r\n",
        "RCPT TO:<[email protected]>\r\n",
        "DATA\r\n",    

        "Subject: Base64\r\n"
        "Mime-Version: 1.0\r\n"   
         
         //Пишим заголовок, что письмо будет с разными типами, разделёнными "--LineType"
         "Content-Type: multipart/mixed; boundary=\"--LineType\"\r\n\r\n"

         //Отправляем текст
         "--LineType\r\n"
         "Content-Type: text/plain; charset=windows-1251\r\n"
         "Content-Transfer-Encoding: 8bit\r\n\r\n"
         "Привет. Это текст.\r\n"
         
         //Отправляем файл file.txt
         "--LineType\r\n"
         "Content-Type: application/octet-stream; name=\"file.txt\"\r\n"
         "Content-Disposition: attachment; filename=\"file.txt\"\r\n"
         "Content-transfer-encoding: base64\r\n\r\n"
         "7/Do4uXy"
         "\r\n--LineType--\r\n"
         
         
         "\r\n.\r\n",
         "QUIT\r\n",
         NULL
    };

PM MAIL   Вверх
CDell
Дата 27.10.2007, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 23.6.2007

Репутация: нет
Всего: нет



Нашёл свою ошибку.
Она в 
Код

"Content-Type: multipart/mixed; boundary=\"--LineType\"\r\n\r\n"

Надо писать
Код

"Content-Type: multipart/mixed; boundary=\"LineType\"\r\n\r\n"

PM MAIL   Вверх
GrayCardinal
Дата 28.10.2007, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 3
Всего: 58



Сидел, галку поставьте...


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0546 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.