Russian Qt Forum
Ноябрь 24, 2024, 18:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как отправить сообщение по почте через прокси-сервер?  (Прочитано 9991 раз)
virtual_root
Гость
« : Ноябрь 21, 2012, 12:54 »

Добрый день ребята. Наверное я глупый вопрос задаю, ну прошу у вас чуточку терпения) Объясните мне пожалуйста, как мне имея адрес прокси сервера и адрес электронной почты отправить сообщение на \тот адрес через заданный прокси сервер?
Записан
mutineer
Гость
« Ответ #1 : Ноябрь 21, 2012, 12:58 »

Протокол какой используешь? Какого типа прокси?
Записан
virtual_root
Гость
« Ответ #2 : Ноябрь 21, 2012, 13:53 »

протокол SMTP.  Я уже отправляла через него простые письма. А теперь мне дан сторонний прокси сервер и надо послать сообщение через него.
В самом протоколе я не вижу где можно указать что отправлять нужно через сторонний прокси сервер. Подскажите пожалуйста)
Записан
virtual_root
Гость
« Ответ #3 : Ноябрь 21, 2012, 13:54 »

попробую сейчас через QTcpSocket::setProxy
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #4 : Ноябрь 21, 2012, 14:02 »

Для SMTP-proxy надо письмо отправлять на адрес прокси-сервера, т.е. соединяться с его IP.
Записан
mutineer
Гость
« Ответ #5 : Ноябрь 21, 2012, 14:11 »

Кроме того, нужен именно SMTP-proxy, а какой у ТС прокси она так и не сказала
Записан
virtual_root
Гость
« Ответ #6 : Ноябрь 21, 2012, 14:13 »

я поняла вас, спасибо. А прокси сервера различаются, так? Т.е. не через все можно отправить письмо на электронный адрес?
Записан
virtual_root
Гость
« Ответ #7 : Ноябрь 21, 2012, 14:14 »

а как узнать поддерживает ли прокси сервер SMTP протокол?
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #8 : Ноябрь 21, 2012, 14:26 »

Если уж речь пошла о прокси: то, что настраивается в IE (и подобных ему браузерах), называется Web-proxy и работает с протоколом http (можно с ftp, но админ должен настроить). А SMTP-proxy - это, в общих чертах, просто еще один почтовый сервер в сети, принимающий, обрабатывающий и пересылающий почтовое сообщение. Вот как-то так...
Записан
Serr500
Гость
« Ответ #9 : Ноябрь 21, 2012, 14:35 »

Чтобы отправлять почту, нужен либо специальный SMTP-прокси, либо SOCKS (4, 4a, 5), либо http-прокси с поддержкой метода CONNECT. При этом, последний вариант может не работать.
Записан
virtual_root
Гость
« Ответ #10 : Ноябрь 21, 2012, 14:37 »

спасибо ребята большое!
Записан
virtual_root
Гость
« Ответ #11 : Ноябрь 22, 2012, 10:34 »

Ребята, можете мне подсказать, что не так в коде. Почему-то у меня не отправляется письмо. При чем после отправки команды DATA\r\n мне приходит всё время ошибка 503... ничего не могу с этим поделать.. Подскажите что не так. До этой команды мне в ответ приходит 250, вроде всё хорошо, но как только хочу отправить DATA то сразу ошибка..
Код:
if ( state == Init && responseLine == "220" ){
            *(this->_strm) << "EHLO " << this->_mailInfo.host << "\r\n";
            (this->_strm)->flush();
            state = Mail;
    }else{
        if ( state == Mail && responseLine == "250" ){
            *(this->_strm) << "MAIL FROM: " << this->_mailInfo.senderEMail << "\r\n";
            (this->_strm)->flush();
            state = Rcpt;
        }else{
            if ( state == Rcpt && (responseLine == "250" || responseLine == "251") ){
                qDebug ()<<"rcpt2"<< "RCPT TO:<" << this->_mailInfo.recipients << ">\r\n";
                    *(this->_strm) << "RCPT TO: <" << this->_mailInfo.recipients << ">\r\n";
                    (this->_strm)->flush();
                    state = Data;
               
            }else{
                if ( state == Data && (responseLine == "250" || responseLine == "251") ){
                    qDebug ()<<"data";
                       *(this->_strm) << "DATA\r\n";
                       (this->_strm)->flush();
                       state = Body;
                }else{
                    if ( state == Body && responseLine == "354" ){
                        qDebug ()<<"body1";
                        QString message = this->_generateHeader();
                        qDebug()<<message;
                        *(this->_strm) << message << "\n" << "\r\n.\r\n";
                        (this->_strm)->flush();
                        state = Quit;
                    }else{ qDebug ()<<"body2";
                        if ( state == Quit && responseLine == "250" ){
                            *(this->_strm) << "QUIT\r\n";
                            (this->_strm)->flush();
                            emit status( tr( "Message sent" ) );
                        }
                    }
                }
            }
        }
    }
}
Записан
virtual_root
Гость
« Ответ #12 : Ноябрь 22, 2012, 13:16 »

я всё починила. Нужна была авторизация. Теперь письмо через smtp.mail.ru отправляется. В интренет нашла пару бесплатных smtp серверов, пробую через них отправить письмо себе на ящик не выходит... 554 ошибка. Можете подсказать, как мне через сторонний smtp сервер отправить письмо?
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #13 : Ноябрь 22, 2012, 13:25 »

Тебе нужно найти open-relay сервер, т.е сервер, позволяющий передавать письмо через себя на другой. По жизни, получение почты с таких серверов нормальными админами блокируется, так как ими, в основном, пользуются спамеры. Хочешь отправить письмо себе - соединяйся со своим SMTP сервером.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.1 секунд. Запросов: 22.