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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не могу подключиться к smtp.google используя SSL 
V
    Опции темы
bomberman
Дата 10.6.2008, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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;

 

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


Эксперт
****


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

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



а smtp у гугла не такой потому что.
TCP25 порт на google.com не открыт.

использйте smtp.gmail.com

Это сообщение отредактировал(а) jonie - 10.6.2008, 22:24


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


Эксперт
***


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

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



разве порт 25 у smtp с SSL ?


--------------------
PM   Вверх
Cyril
Дата 10.6.2008, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А где/как можно узнать другие реально работающие доменные-smtp-имена + порт серверы почты, поддерживающие ssl? Или как в gmail узнать порт для smtp?
PM MAIL   Вверх
nirburg
Дата 11.6.2008, 06:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Cyril, для gmail - в настройках почтового ящика. 
smtp.gmail.com - 587
pop.gmail.com - 995
PM MAIL   Вверх
bomberman
Дата 11.6.2008, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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



PM MAIL ICQ   Вверх
yosi
Дата 3.5.2010, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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.


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


 




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


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

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