2016-09-01 2 views
0


Я стараюсь писать код для электронной почты проверить, как этот
Но у меня есть одна проблема, 25 портов не соединиться с любым почтовым сервером
Мой код, как этот
socket_connect() не работает с 25 портом

example.php

<? PHP

требуется («smtp-validate-email.php»);

$ from = '[email protected]'; // для SMTP FROM: < > команда

$ emails = '[email protected]';

$ validator = новый SMTP_Validate_Email ($ emails, $ from);

$ smtp_results = $ validator- > validate();

эхо "<pre>"; print_r ($ smtp_results); выход;

SMTP-Validate-email.php

<? PHP
/*
  * Для того, чтобы изменить заголовок лицензии, выберите Лицензионные заголовки в свойствах проекта.
  * Для изменения этого файла шаблона выберите команду Инструменты | Шаблоны
  * и откройте шаблон в редакторе.
  */

/**
  * Описание EmailValidation
  *
  * @author Harsukh Makwana   <[email protected]>
  */
класс EmailValidation
{
      общественности $ hellodomain = 'itsolutionstuff.com';
      public $ mailfrom       = '[email protected]';
      public $ rcptto;
      public $ mx;
      public $ ip;

      функция __construct общественности()
      {
              $ this- > ф = «192.168.2.14' ;
     }

      общественная функция checkEmail ($ электронной почте = нуль)
      {
              $ this- > rcptto = $ электронная почта;
              $ массив               = взорваться («@», $ this- > rcptto);
              $ дом                   = $ массив [1];
             , если (getmxrr ($ дом, $ х)) {
                      $ этом- > х = $ х [Rand (0, граф ($ х) - 1)];
                      возвращение $ this- > processRange ($ this- > ф);
             }
              возвращение ложным;
     }

      частные функции asyncRead ($ носка)
      {
              $ read_sock     = массив ($ носок);
              $ write_sock   = NULL;
              $ except_sock = NULL;
             
              если (socket_select ($ read_sock, $ write_sock, $ except_sock, 5)!= 1) {
                      возвращение FALSE;
             }
              $ RET = socket_read ($ носка, 512);
              возвращение $ ret;
     }

      частные функции smtpConnect ($ MTA, $ src_ip)
      {
              $ носка = socket_create (AF_INET, SOCK_STREAM, SOL_TCP);

              если ($ носка == FALSE) {
                      возврата массива (FALSE, то «не может открыть сокет»);
             }
              если (!socket_bind ($ носка, $ src_ip)) {
                      возврат массива (FALSE, «не может связываться с Src IP»);
             }

              $ таймаут = массив («сек» = > 10, «мксек» = > 0);
              socket_set_option ($ носка, SOL_SOCKET, SO_RCVTIMEO, $ Тайм-аут);

              socket_set_nonblock ($ носка);
              var_dump (@socket_connect ($ sock, $ mta, 25)); exit;
              @socket_connect ($ sock, $ mta, 25);

              $ RET = $ этом- > asyncRead ($ носка);
              если ($ RET === FALSE) {
                      возврата массива (FALSE, «Начальное чтение тайм-аут»);
             }

              если (! Preg_match ('/^220 /', $ RET)) {// Не хорошее соединение.
                      возврат массива (FALSE, $ RET);
             }

              // Теперь сделайте EHLO.
              socket_write ($ носка, "HELO". $ This- > hellodomain."\ Г \ п");
              $ RET = $ этом- > asyncRead ($ носка);
              если ($ RET === FALSE) {
                      возврата массива (FALSE «EHLO истекло»);
             }

              если (! Preg_match ('/^250 /', $ RET)) {// Не хороший ответ.
                      возврат массива (FALSE, $ RET);
             }

              // Теперь MAIL FROM.
              socket_write ($ носка, "MAIL FROM: <" $ этом- > MAILFROM "> \ г \ п"..);
              $ RET = $ этом- > asyncRead ($ носка);
              если ($ RET === FALSE) {
                      возврата массива (FALSE «от тайм-аут»);
             }

              если (! Preg_match («/^250 /», $ RET)) // Не хороший ответ.
                              возврат массива (FALSE, $ RET);

              // Теперь RCPT TO.
              socket_write ($ носка, "RCPT TO: <".. $ Этом- > rcptto "> \ г \ п");
              $ RET = $ этом- > asyncRead ($ носка);
              если ($ RET === FALSE) {
                      возврата массива (FALSE «RCPT к тайм-аут»);
             }

              если (! Preg_match («/^250 /», $ RET)) {
                      // Не хороший ответ.
                      возврат массива (FALSE, $ RET);
             }
              // Все хорошо.


              socket_close ($ носка);
              return array (true, $ ret);
     }

      частные функции processRange ($ ф)
      {
              список ($ RET, $ тзд) = $ this- > smtpConnect ($ this- > тх , $ ip);
              $ msg = trim ($ msg);
              возвращение $ ret;
     }}

 

 

Выходной

Array 
(
    [[email protected]] => 
    [domains] => Array 
     (
      [gmail.com] => Array 
       (
        [users] => Array 
         (
          [0] => harsukh 
         ) 
        [mxs] => Array 
         (
          [gmail-smtp-in.l.google.com] => 5 
          [alt1.gmail-smtp-in.l.google.com] => 10 
          [alt2.gmail-smtp-in.l.google.com] => 20 
          [alt3.gmail-smtp-in.l.google.com] => 30 
          [alt4.gmail-smtp-in.l.google.com] => 40 
          [gmail.com] => 0 
         ) 
       ) 
     ) 
)

Здесь [email protected] находится а уже существует, но я получаю нулевой ответ
Могу ли я использовать другой порт для почтового сервера?

ответ

0

Вы не можете использовать порт, который уже используется. Таким образом, на сервере, на котором работает ваш код, уже есть сервер электронной почты.

Могу ли я использовать другой порт для почтового сервера?

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

Смежные вопросы