![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
bomberman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 4.4.2008 Где: Брест Репутация: нет Всего: нет |
Приветствую! Имеется код одного исходника почтового клиента Althea (althea.sourceforge.com) для подключения к серверу, который поддерживает SSL. Но почему-то SSL-часть не хочет соединяться (может не правильно указываю доменное имя или через smtp это все делать?). Made in... Visual C++ 6.0 (Заранее спасибо за ответ!): #include "StdAfx.h" #include <winsock2.h> #include <iostream.h> #include <openssl/crypto.h> #include <openssl/x509.h> #include <openssl/pem.h> #include <openssl/ssl.h> #include <openssl/err.h> #include <openssl/rand.h> #include <conio.h> #include <strings.h> int main() { WSAData WSAData1; int rc = WSAStartup(MAKEWORD(1,1), &WSAData1); if (rc) { MessageBox(NULL, "Ioeaea auciaa WSAStartup", "Error", MB_OK); return (FALSE); } struct sockaddr_in remoteAddress; const char *hostName = "google.com"; const int port = 25; bzero( (char *)(&remoteAddress), sizeof(remoteAddress) ); remoteAddress.sin_family = AF_INET; remoteAddress.sin_port = htons( (u_short)port ); struct hostent *hostInfo = gethostbyname( hostName ); if( hostInfo ) bcopy( hostInfo->h_addr, (char *)(&remoteAddress.sin_addr), hostInfo->h_length ); else { remoteAddress.sin_addr.s_addr = inet_addr( hostName ); if( remoteAddress.sin_addr.s_addr == INADDR_NONE ) return( NULL ); } int sock = socket( PF_INET, SOCK_STREAM, 0 ); if( sock < 0 ) return( NULL ); if( connect( sock, (struct sockaddr *)&remoteAddress, sizeof(remoteAddress) ) < 0 ) return( NULL ); SSLeay_add_ssl_algorithms(); SSL_load_error_strings(); SSL_library_init(); char qrandomstring[15]; srand(time(0)); sprintf(qrandomstring,"%d",rand()); RAND_seed(qrandomstring, strlen(qrandomstring)); SSL_CTX *ctx = SSL_CTX_new(SSLv23_client_method()); SSL *ssl=SSL_new(ctx); SSL_set_fd(ssl, sock); if (SSL_connect(ssl)<=0) { cout << "SSL connection failed" << endl; return NULL; } WSACleanup(); closesocket (sock); SSL_free (ssl); SSL_CTX_free (ctx); return 0; } |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 5 Всего: 118 |
а smtp у гугла не такой потому что.
TCP25 порт на google.com не открыт. использйте smtp.gmail.com Это сообщение отредактировал(а) jonie - 10.6.2008, 22:24 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: нет Всего: 56 |
разве порт 25 у smtp с SSL ?
|
|||
|
||||
Cyril |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 30.9.2007 Репутация: нет Всего: нет |
А где/как можно узнать другие реально работающие доменные-smtp-имена + порт серверы почты, поддерживающие ssl? Или как в gmail узнать порт для smtp?
|
|||
|
||||
nirburg |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 20.3.2008 Репутация: нет Всего: 1 |
Cyril, для gmail - в настройках почтового ящика.
smtp.gmail.com - 587 pop.gmail.com - 995 |
|||
|
||||
bomberman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 4.4.2008 Где: Брест Репутация: нет Всего: нет |
Все отлично. Данный код подключается к почтовым ssl-серверам! Зашел в настройки gmail и yahoo.
Для gmail настройки следующие: smtp: "smtp.gmail.com" 465 pop: "pop.gmail.com" 995 Для yahoo настройки следующие: smtp: "smtp.mail.yahoo.com" 465 pop: "pop.mail.yahoo.com" 995 |
|||
|
||||
yosi |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 3.5.2010 Репутация: нет Всего: нет |
а у меня не проходит authentication клиента . после connect'a в проге:
// wait logon from SMTP Server read_socket(); // said hello to server send_socket(HELO); //earlier in program : #define HELO "EHLO google.mail.com\r\n" // read reply read_socket(); send_socket("VRFY "); send_socket(from_email); send_socket("\r\n"); read_socket(); // authentication send_socket("AUTH LOGIN\r\n"); // read answer read_socket(); // send login send_socket(login); //login - base64 encoded string : [email protected] send_socket("\r\n"); // read answer read_socket(); // send password send_socket(password); //password - base64 encoded string : mypassword send_socket("\r\n"); read_socket(); // end of authentication последнее дает 535 error. Help,please. |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |