Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Отправка писем через SMTP с авторизацией

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Вопрос по статье
Deno
Отправлено: 31 Мая, 2013 - 15:21:32
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Май 2013  


Помог: 0 раз(а)




Взял исходник http://www.php.su/articles/?cat=email&page=007:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function get_data($smtp_conn)
  4.  {
  5. $data="";
  6.  while($str = fgets($smtp_conn,515))
  7.  {
  8. $data .= $str;
  9.  if(substr($str,3,1) == " ") { break; }
  10.  }
  11.  return $data;
  12.  }
  13.  
  14. $header="Date: ".date("D, j M Y G:i:s")." +0700\r\n";
  15. $header.="From: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode('Максим')))."?= <login@mail.ru>\r\n";
  16. $header.="X-Mailer: The Bat! (v3.99.3) Professional\r\n";
  17. $header.="Reply-To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode('Максим')))."?= <login@mail.ru>\r\n";
  18. $header.="X-Priority: 3 (Normal)\r\n";
  19. $header.="Message-ID: <172562218.".date("YmjHis")."@mail.ru>\r\n";
  20. $header.="To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode('Сергей')))."?= <qwe@asd.ru>\r\n";
  21. $header.="Subject: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode('проверка')))."?=\r\n";
  22. $header.="MIME-Version: 1.0\r\n";
  23. $header.="Content-Type: text/plain; charset=windows-1251\r\n";
  24. $header.="Content-Transfer-Encoding: 8bit\r\n";
  25.  
  26. $text="привет, проверка связи.";
  27.  
  28. $smtp_conn = fsockopen("smtp.mail.ru", 25,$errno, $errstr, 10);
  29.  if(!$smtp_conn) {print "соединение с серверов не прошло"; fclose($smtp_conn); exit;}
  30. $data = get_data($smtp_conn);
  31. fputs($smtp_conn,"EHLO mail.ru\r\n");
  32. $code = substr(get_data($smtp_conn),0,3);
  33.  if($code != 250) {print "ошибка приветсвия EHLO"; fclose($smtp_conn); exit;}
  34. fputs($smtp_conn,"AUTH LOGIN\r\n");
  35. $code = substr(get_data($smtp_conn),0,3);
  36.  if($code != 334) {print "сервер не разрешил начать авторизацию"; fclose($smtp_conn); exit;}
  37.  
  38. fputs($smtp_conn,base64_encode("login")."\r\n");
  39. $code = substr(get_data($smtp_conn),0,3);
  40.  if($code != 334) {print "ошибка доступа к такому юзеру"; fclose($smtp_conn); exit;}
  41.  
  42.  
  43. fputs($smtp_conn,base64_encode("password")."\r\n");
  44. $code = substr(get_data($smtp_conn),0,3);
  45.  if($code != 235) {print "не правильный пароль"; fclose($smtp_conn); exit;}
  46.  
  47. fputs($smtp_conn,"MAIL FROM:login@mail.ru\r\n");
  48. $code = substr(get_data($smtp_conn),0,3);
  49.  if($code != 250) {print "сервер отказал в команде MAIL FROM"; fclose($smtp_conn); exit;}
  50.  
  51. fputs($smtp_conn,"RCPT TO:qwe@asd.ru\r\n");
  52. $code = substr(get_data($smtp_conn),0,3);
  53.  if($code != 250 AND $code != 251) {print "Сервер не принял команду RCPT TO"; fclose($smtp_conn); exit;}
  54.  
  55. fputs($smtp_conn,"DATA\r\n");
  56. $code = substr(get_data($smtp_conn),0,3);
  57.  if($code != 354) {print "сервер не принял DATA"; fclose($smtp_conn); exit;}
  58.  
  59. fputs($smtp_conn,$header."\r\n".$text."\r\n.\r\n");
  60. $code = substr(get_data($smtp_conn),0,3);
  61.  if($code != 250) {print "ошибка отправки письма"; fclose($smtp_conn); exit;}
  62.  
  63. fputs($smtp_conn,"QUIT\r\n");
  64. fclose($smtp_conn);
  65. ?>
  66.  


Подставил все данные, авторизацию прошёл успешно но выдаёт "ошибка отправки письма". В чём может быть проблема?

(Отредактировано автором: 31 Мая, 2013 - 15:22:15)

 
 Top
caballero
Отправлено: 31 Мая, 2013 - 17:25:52
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




а в чем великий смысл работы с протоколом SMTP напрямую?


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
anton17
Отправлено: 03 Октября, 2014 - 19:34:34
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




А что означает если появляется такая ошибка?
сервер отказал в команде MAIL FROM
 
 Top
dcc0
Отправлено: 03 Октября, 2014 - 19:59:38
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Скорее всего - 550 5.1.3 Bad e-mail address syntax.
Если это mail.ru
(Добавление)
А не, скорее, вот это ближе к реальности:
SMTP is available only with SSL or TLS connection enabled

В общем надо искать способ воспользовться ssl для php,
например, openssl

(Отредактировано автором: 03 Октября, 2014 - 20:44:59)



-----
Март 2021. Бросил программирование
 
 Top
anton17
Отправлено: 04 Октября, 2014 - 15:49:09
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




Да почта mail, а как от нее избавиться?
 
 Top
anton17
Отправлено: 06 Октября, 2014 - 18:39:58
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




Вот такую ошибку выдает

550 - The requested command failed because the user's mailbox was unavailable (such as not found))

Это ошибка означает, что mail за спам считает? или что эта ошибка означает
 
 Top
dcc0
Отправлено: 07 Октября, 2014 - 11:49:37
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Это означает, что требуется tls для команды mail from
Типа starttls, только просто его включение ничего не даст, нужно установить защищенное соединение до входа

(Отредактировано автором: 07 Октября, 2014 - 11:52:38)



-----
Март 2021. Бросил программирование
 
 Top
anton17
Отправлено: 09 Октября, 2014 - 09:49:03
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




а можно по подробнее про это? или ссылочку)
 
 Top
dcc0
Отправлено: 09 Октября, 2014 - 15:47:45
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Для начала
http://en[dot]wikipedia[dot]org/wiki/STARTTLS
(Добавление)
Я так понимаю, в общем ситуация такая. Если через telnet,
то после команды starttls нужно еще раз дать ehlo mail.ru,
но соединение с mail.ru обрывается, по всей видимости, на этом этапе нужен handshake
Т.е. вообще получается что нужно так в php: fsockopen("ssl://smtp.mail.ru", 25)
или sslv2 или sslv3
Но я пока не совсем понял, как нужно настроить ssl
В php.ini вроде все включено.
Ошибка вылетает такая:
SSL operation failed with code 1. OpenSSL Error messages: error:1408F10B:SSL

Т.е. что не настроено для ssl
(Добавление)
http://php.net/manual/ru/transports.inet.php


-----
Март 2021. Бросил программирование
 
 Top
Мелкий Супермодератор
Отправлено: 09 Октября, 2014 - 17:04:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Блин, ответьте на неимоверно логичный вопрос полуторагодичной давности:
caballero пишет:
а в чем великий смысл работы с протоколом SMTP напрямую?


-----
PostgreSQL DBA
 
 Top
dcc0
Отправлено: 09 Октября, 2014 - 17:06:49
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




В общем нашел решение:
Так работает c mail.ru
Меняйте
$smtp_conn = fsockopen("ssl://smtp.mail.ru", 465,$errno, $errstr, 10)

Меликий, я считаю скрипт наверху учебным - в этом весь глубинный смысл.
Человек посмотрел на него, поковырял, изучил ошибки, может, почитал rfc
и спокойно перешел на mail() и MTA типа sendmail, postfix, exim
Вариант 2, какой-то очень экзотический вариант, когда не можно mail и MTA
Я не знаю, что это может быть за ситуация.

(Отредактировано автором: 09 Октября, 2014 - 17:14:37)



-----
Март 2021. Бросил программирование
 
 Top
anton17
Отправлено: 09 Октября, 2014 - 18:19:53
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




dcc0Спасибо большое заработало
 
 Top
dcc0
Отправлено: 09 Октября, 2014 - 18:51:07
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




anton17, только все ли в порядке с кодировкой?
По-моему надо переделывать для mail.ru


-----
Март 2021. Бросил программирование
 
 Top
anton17
Отправлено: 09 Октября, 2014 - 19:04:59
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




С кодировкой все хорошо, работает как часы
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Обсуждение статей »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB