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]   

> Описание: Разъяснения. Вопросы.
dcc0
Отправлено: 03 Июля, 2014 - 22:24:48
Post Id


Участник


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


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




http://www.php.su/articles/?cat=...ail&page=007
Доброго всем здравия. Для начала хотел бы выразить благодарность за статью, ссылка на которую прямо над этой строчкой. Спасибо автору или переводчику. Статья помогла, не пришлось читать официальную документацию по SMTP. Недавно сделал для своего сайта форму обратной связи, но через Sendmail. Захотелось сделать через сокет.
Скрипт отправки почты прекрасно работает с Яндекс, Рамблер. Но это не суть важно.
Все практические задачи я решил. Захотелось разобраться в скрипте, который в статье обозначен заголовком "Отправка письма без вложений". Я не буду копировать весь код из статьи. Чтобы разобраться, я решил сократить код.
Будем исходить из того, что мы делаем форму обратной связи для сайта. В связи с этим вопросы:

1. Так ли необходимо каждый раз проверять ответ сервера и разрывать соединение?
Я о проверках после каждого fputs.
2. Не будет ли достаточно того, что мы проверили подключение к серверу и в конце отправку?

Теперь функция?
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. function get_data($smtp_conn)
  3. {
  4. $data="";
  5. while($str = fgets($smtp_conn,515))
  6. {
  7. $data .= $str;
  8. if(substr($str,3,1) == " ") { break; }
  9. }
  10. return $data;
  11. }



Переменная задана здесь:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $data = get_data($smtp_conn);


Результат возвращается в переменную:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $code = substr(get_data($smtp_conn),0,3);


Что мне непонятно? Так ли необходим цикл в функции? Для чего здесь нужен он? Для ожидания ответа от сервера? Если он не отвечает мгновенно?
Переменная в начале функции

с пустым значением - как я понимаю, - несколько сбивает с толку.

Дальше не совсем ясно, зачем конкатенация:

Честно говоря, это меня совсем запутало.

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

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. if(substr($str,3,1) == " ") { break; }
  3.  




В общем, чтобы разобраться я сократил так:

Спойлер (Отобразить)

(Отредактировано автором: 06 Ноября, 2016 - 19:50:48)



-----
Март 2021. Бросил программирование
 
 Top
Yury_ru
Отправлено: 05 Ноября, 2016 - 14:33:09
Post Id


Новичок


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


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




Тема устарела но все же напишу)) Я начинающий так сказать. По статье http://www.php.su/articles/?cat=email&page=007#
Написал index.pnp по этой статье. запускаю с компа через денвер все работает. письмо доходит. Вставляю этот код на сайт, там выдает ошибку: Предупреждение: fsockopen (): не удается подключиться к smtp.mail.ru:25~~V. Что делать как исправить, обойти?
 
 Top
dcc0
Отправлено: 06 Ноября, 2016 - 17:45:00
Post Id


Участник


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


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




Только в качестве предположения: если на собственном комп. работает, а на хостинге нет, то вопросы к поставщику хостинга.
Вывод на основе этого: http://www.acyba.com/ru/forum/2-acymailing-bug-report/6873-failed-to-connect-to-server-connection-timed-out-110.html

(Отредактировано автором: 06 Ноября, 2016 - 17:45:23)



-----
Март 2021. Бросил программирование
 
 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