+ Ответить в теме
Показано с 1 по 10 из 10
  1. #1
    Аватар для trusty trusty Не известно кто Новичок
    Сообщений
    8
    Поблагодарили 0 раз(а) в 0 сообщениях

    foreach и отправка email'а


    Парюсь третий день над кодом. Почему-то если вместо 'текст письма' вставляю переменную или пишу так: 'текст письма'.$string ($string - строка, которая создается заранее и echo её отображает без проблем, выглядит строка так как нужно) - письмо не отправляется и возникает ошибка на странице:
    Письмо не отправлено. Ошибка: E-mail didn't sent


    PHP код:
    $body '';
    ......................
    foreach(
    $a as $myarr => $s)
    {
    $body.= "{$myarr} - $s<br>";
    }
    .......................
    $result $mailSMTP->send('kih@9876543.ru''Письмо!''<br>'.$body$headers); // отправляем письмо 

    Этот код отправляет почту, но без названий найденных файлов.

    PHP код:
    <?php
    header
    ("Content-Type: text/html; charset=windows-1251");
     
    $path='files/';
    $dir opendir($path);
    $string_to_search='ticket';
     
    while((
    $file readdir($dir)) !== false)
    {
        
    $a[] = strstr($file,$string_to_search);
    }
    print_r($a);
     
    //вывод названий файлов в папке без цифр и по маске ticket в названии
    foreach($a as $myarr)
    {
      echo 
    $myarr."<br />";
     
    }
     
     
     
     
    closedir($dir);
     
    require_once 
    "SendMailSmtpClass.php"// подключаем класс
    $mailSMTP = new SendMailSmtpClass('vikt@mail.ru''hhDt6dh@78''smtp.mail.ru''vikt'); // создаем экземпляр класса
    // $mailSMTP = new SendMailSmtpClass('логин', 'пароль', 'хост', 'имя отправителя');
    // заголовок письма
    $headers"MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=windows-1251\r\n"// кодировка письма
    $headers .= "From: vikt <vikt@mail.ru>\r\n"// от кого письмо
    $result $mailSMTP->send('kih@9876543.ru''письмо!''текст письма'$headers); // отправляем письмо
    if($result === true){
    echo 
    "Письмо успешно отправлено";
    }else{
    echo 
    "Письмо не отправлено. Ошибка: " $result;
    }
     
    ?>
    Натолкните на что нибудь что мне поможет отправлять названия файлов (по маске ticket) на email. Вот этот вывод echo $myarr."<br />"; хочу отправить очень. Спасибо.

  2. #2
    Аватар для trusty trusty Не известно кто Новичок
    Сообщений
    8
    Поблагодарили 0 раз(а) в 0 сообщениях
    SendMailSmtpClass.php

    PHP код:
    <?php

    /**
    * SendMailSmtpClass
    *
    * Класс для отправки писем через SMTP с авторизацией
    *
    * @author Ipatov Evgeniy <admin@ipatov-soft.ru>
    * @version 1.0
    */
    class SendMailSmtpClass {
    /**
    *
    * @var string $smtp_username - логин
    * @var string $smtp_password - пароль
    * @var string $smtp_host - хост
    * @var string $smtp_from - от кого
    * @var integer $smtp_port - порт
    * @var string $smtp_charset - кодировка
    *
    */
    public $smtp_username;
    public 
    $smtp_password;
    public 
    $smtp_host;
    public 
    $smtp_from;
    public 
    $smtp_port;
    public 
    $smtp_charset;
    public function 
    __construct($smtp_username$smtp_password$smtp_host$smtp_from$smtp_port 25$smtp_charset "utf-8") {
    $this->smtp_username $smtp_username;
    $this->smtp_password $smtp_password;
    $this->smtp_host $smtp_host;
    $this->smtp_from $smtp_from;
    $this->smtp_port $smtp_port;
    $this->smtp_charset $smtp_charset;
    }
    /**
    * Отправка письма
    *
    * @param string $mailTo - получатель письма
    * @param string $subject - тема письма
    * @param string $message - тело письма
    * @param string $headers - заголовки письма
    *
    * @return bool|string В случаи отправки вернет true, иначе текст ошибки *
    */
    function send($mailTo$subject$message$headers) {
    $contentMail "Date: " date("D, d M Y H:i:s") . " UT\r\n";
    $contentMail .= 'Subject: =?' $this->smtp_charset '?B?' base64_encode($subject) . "=?=\r\n";
    $contentMail .= $headers "\r\n";
    $contentMail .= $message "\r\n";
    try {
    if(!
    $socket = @fsockopen($this->smtp_host$this->smtp_port$errorNumber$errorDescription30)){
    throw new 
    Exception($errorNumber.".".$errorDescription);
    }
    if (!
    $this->_parseServer($socket"220")){
    throw new 
    Exception('Connection error');
    }
    fputs($socket"HELO " $this->smtp_host "\r\n");
    if (!
    $this->_parseServer($socket"250")) {
    fclose($socket);
    throw new 
    Exception('Error of command sending: HELO');
    }
    fputs($socket"AUTH LOGIN\r\n");
    if (!
    $this->_parseServer($socket"334")) {
    fclose($socket);
    throw new 
    Exception('Autorization error');
    }
    fputs($socketbase64_encode($this->smtp_username) . "\r\n");
    if (!
    $this->_parseServer($socket"334")) {
    fclose($socket);
    throw new 
    Exception('Autorization error');
    }
    fputs($socketbase64_encode($this->smtp_password) . "\r\n");
    if (!
    $this->_parseServer($socket"235")) {
    fclose($socket);
    throw new 
    Exception('Autorization error');
    }
    fputs($socket"MAIL FROM: ".$this->smtp_username."\r\n");
    if (!
    $this->_parseServer($socket"250")) {
    fclose($socket);
    throw new 
    Exception('Error of command sending: MAIL FROM');
    }
    fputs($socket"RCPT TO: " $mailTo "\r\n");
    if (!
    $this->_parseServer($socket"250")) {
    fclose($socket);
    throw new 
    Exception('Error of command sending: RCPT TO');
    }
    fputs($socket"DATA\r\n");
    if (!
    $this->_parseServer($socket"354")) {
    fclose($socket);
    throw new 
    Exception('Error of command sending: DATA');
    }
    fputs($socket$contentMail."\r\n.\r\n");
    if (!
    $this->_parseServer($socket"250")) {
    fclose($socket);
    throw new 
    Exception("E-mail didn't sent");
    }
    fputs($socket"QUIT\r\n");
    fclose($socket);
    } catch (
    Exception $e) {
    return 
    $e->getMessage();
    }
    return 
    true;
    }
    private function 
    _parseServer($socket$response) {
    while (@
    substr($responseServer31) != ' ') {
    if (!(
    $responseServer fgets($socket256))) {
    return 
    false;
    }
    }
    if (!(
    substr($responseServer03) == $response)) {
    return 
    false;
    }
    return 
    true;
    }
    }

  3. #3
    Аватар для MRX MRX Не известно кто Прохожий
    Сообщений
    92
    Поблагодарили 2 раз(а) в 2 сообщениях
    Цитата Сообщение от trusty Посмотреть сообщение

    Парюсь третий день над кодом. Почему-то если вместо 'текст письма' вставляю переменную или пишу так: 'текст письма'.$string ($string - строка, которая создается заранее и echo её отображает без проблем, выглядит строка так как нужно) - письмо не отправляется и возникает ошибка на странице:
    Письмо не отправлено. Ошибка: E-mail didn't sent


    PHP код:
    $body '';
    ......................
    foreach(
    $a as $myarr => $s)
    {
    $body.= "{$myarr} - $s<br>";
    }
    .......................
    $result $mailSMTP->send('kih@9876543.ru''Письмо!''<br>'.$body$headers); // отправляем письмо 

    Этот код отправляет почту, но без названий найденных файлов.

    PHP код:
    <?php
    header
    ("Content-Type: text/html; charset=windows-1251");
     
    $path='files/';
    $dir opendir($path);
    $string_to_search='ticket';
     
    while((
    $file readdir($dir)) !== false)
    {
        
    $a[] = strstr($file,$string_to_search);
    }
    print_r($a);
     
    //вывод названий файлов в папке без цифр и по маске ticket в названии
    foreach($a as $myarr)
    {
      echo 
    $myarr."<br />";
     
    }
     
     
     
     
    closedir($dir);
     
    require_once 
    "SendMailSmtpClass.php"// подключаем класс
    $mailSMTP = new SendMailSmtpClass('vikt@mail.ru''hhDt6dh@78''smtp.mail.ru''vikt'); // создаем экземпляр класса
    // $mailSMTP = new SendMailSmtpClass('логин', 'пароль', 'хост', 'имя отправителя');
    // заголовок письма
    $headers"MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=windows-1251\r\n"// кодировка письма
    $headers .= "From: vikt <vikt@mail.ru>\r\n"// от кого письмо
    $result $mailSMTP->send('kih@9876543.ru''письмо!''текст письма'$headers); // отправляем письмо
    if($result === true){
    echo 
    "Письмо успешно отправлено";
    }else{
    echo 
    "Письмо не отправлено. Ошибка: " $result;
    }
     
    ?>
    Натолкните на что нибудь что мне поможет отправлять названия файлов (по маске ticket) на email. Вот этот вывод echo $myarr."<br />"; хочу отправить очень. Спасибо.
    могу готовый пакет + проект продать на DevelNext'e
    также есть возможность прикреплять файлы, картинки и тд.
    а также поддержка html
    по подробнее могу объяснить и помочь.
    Последний раз редактировалось вова77; 19.11.2018 в 23:05.

  4. #4
    Аватар для trusty trusty Не известно кто Новичок
    Сообщений
    8
    Поблагодарили 0 раз(а) в 0 сообщениях

    ?

    возможно поможет поместить отправку почты внутрь цикла foreach? help...!

  5. #5
    Аватар для PiEy PiEy Очень опасный тип PiEy Очень опасный тип PiEy Очень опасный тип Путешественник
    Сообщений
    443
    Поблагодарили 40 раз(а) в 40 сообщениях
    в дс, нельзя отправлять на почту, еслив через сервер отправлять только

  6. #6
    Аватар для trusty trusty Не известно кто Новичок
    Сообщений
    8
    Поблагодарили 0 раз(а) в 0 сообщениях
    Цитата Сообщение от PiEy Посмотреть сообщение
    в дс, нельзя отправлять на почту, еслив через сервер отправлять только
    через какой и как?

  7. #7
    Аватар для trusty trusty Не известно кто Новичок
    Сообщений
    8
    Поблагодарили 0 раз(а) в 0 сообщениях
    PHP код:
    <?php

    header
    ("Content-Type: text/html; charset=windows-1251");

    require_once 
    "SendMailSmtpClass.php"// подключаем класс
    $mailSMTP = new SendMailSmtpClass('fwii@mail.ru''feefegeh$GD''smtp.mailserver.ru''fwii'); // создаем экземпляр класса
    // $mailSMTP = new SendMailSmtpClass('логин', 'пароль', 'хост', 'имя отправителя');
    // заголовок письма
    $headers"MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=windows-1251\r\n"// кодировка письма
    $headers .= "From: zayavkitii <fwii@mail.ru>\r\n"// от кого письмо

    $path='files/';
    $dir opendir($path);
    $string_to_search='ticket';
    $s=' ';


    while((
    $file readdir($dir)) !== false)
    {
        
    $a[] = strstr($file,$string_to_search);
    }
    print_r($a);

    //вывод названий файлов с заявками без лишних цифр и файлов по маске ticket в названии
    foreach($a as $myarr)
    {
      echo 
    $myarr."<br />";

    }
    $s $myarr;



    closedir($dir);

    echo 
    $s;
    $result $mailSMTP->send('kih@4252433.ru''Заявка!'' '.$s.' '$headers); // отправляем письмо
    if($result === true){
    echo 
    "Письмо успешно отправлено";
    }else{
    echo 
    "Письмо не отправлено. Ошибка: " $result;
    }

    ?>
    письмо по прежнему не уходит, а echo $s выводит только последнюю запись из foreach($a as $myarr) почему-то (

  8. #8
    Аватар для trusty trusty Не известно кто Новичок
    Сообщений
    8
    Поблагодарили 0 раз(а) в 0 сообщениях
    PHP код:
    <?php

    header
    ("Content-Type: text/html; charset=windows-1251");

    require_once 
    "SendMailSmtpClass.php"// подключаем класс
    $mailSMTP = new SendMailSmtpClass('asasasas@mail.ru''3456789876543345''smtp.mailserver.ru''asasasas'); // создаем экземпляр класса
    // $mailSMTP = new SendMailSmtpClass('логин', 'пароль', 'хост', 'имя отправителя');
    // заголовок письма
    $headers"MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=windows-1251\r\n"// кодировка письма
    $headers .= "From: asasasas <asasasas@mail.ru>\r\n"// от кого письмо

    $path='files/';
    $dir opendir($path);
    $string_to_search='ticket';
    $s=' ';


    while((
    $file readdir($dir)) !== false)
    {
        
    $a[] = strstr($file,$string_to_search);
    }
    print_r($a);

    //вывод названий файлов с заявками без лишних цифр и файлов по маске ticket в названии
    foreach($a as $myarr)
    {
      echo 
    $myarr."<br />";

    }

    foreach(
    $a as $myarr)
    {
    $s .= $myarr."<br />";
    }
    //в $s теперь то что на почту должно уйти


    closedir($dir);

    echo 
    $s;
    //foreach($a as $myarr)
    //{
    $mailSMTP->send("kih@747526524.ru","Заявка!"" <br>".$s,$headers);// отправляем письмо
    // не отправляет ни в фореаче ни без фореача почту...
    //}

    //$result = $mailSMTP->send('kih@3564353.ru', 'Заявка!', ' '.$s.' ', $headers); // отправляем письмо
    if($result === true){
    echo 
    "Письмо успешно отправлено";
    }else{
    echo 
    "Письмо не отправлено. Ошибка: " $result;
    }

    ?>
    теперь переменная s содержит то что надо , отображается на странице, но когда дело до отправки мыла доходит то "Письмо не отправлено. Ошибка: ":(
    библиотека smtp send'ера что-ли косячная или мой код?..

  9. #9
    Аватар для trusty trusty Не известно кто Новичок
    Сообщений
    8
    Поблагодарили 0 раз(а) в 0 сообщениях
    PHP код:
    if($result true){
    echo 
    "Письмо успешно отправлено";
    }else{
    echo 
    "Письмо не отправлено. Ошибка: " $result;

    так в конце написал вместо $result === true и скрипт выдал, что отправлено письмо, но пока его в ящике нет....

  10. #10
    Аватар для trusty trusty Не известно кто Новичок
    Сообщений
    8
    Поблагодарили 0 раз(а) в 0 сообщениях
    поменял либу для отправки. теперь использую swift-mailer 5.4.3. и понял что одинарное равно это присваивание и поэтому писало что отправлено, а письмо так и не ушло.

    этот код пытается отправить переменную $s

    PHP код:
    <?php

    require("lib/swift_required.php");
    $path='files/';
    $dir opendir($path);
    $string_to_search='ticket';
    $s=' ';

    $transport Swift_SmtpTransport::newInstance('smtp.mailserver.ru'465)
      ->
    setUsername('zayavki@mailserver.ru')
      ->
    setPassword('143647352646')
    ;

    $mailer Swift_Mailer::newInstance($transport);



    while((
    $file readdir($dir)) !== false)
    {
        
    $a[] = strstr($file,$string_to_search);
    }
    print_r($a);

    //вывод названий файлов с заявками без лишних цифр и файлов по маске ticket в названии
    foreach($a as $myarr)
    {
      echo 
    $myarr."<br />";

    }

    foreach(
    $a as $myarr)
    {
    $s .= $myarr."<br />";
    }
     



    closedir($dir);

    echo 
    $s;

    $message Swift_Message::newInstance('Subject')
      ->
    setFrom(array('zayavki@mailserver.ru' => 'zayavki'))
      ->
    setTo(array('kih@6436.ru' => 'asasasas'))
      ->
    setBody('на!  '.$s)
      ;


    $result $mailer->send($message);
    ?>
    но не везет по прежнему мне (
    PHP код:
    Fatal errorUncaught exception 'Swift_TransportException' with message 'Connection could not be established with host smtp.mailserver.ru [Connection refused #111]' in /home/zayavki/public_html/lib/classes/Swift/Transport/StreamBuffer.php:269 Stack trace#0 /home/zayavki/public_html/lib/classes/Swift/Transport/StreamBuffer.php(62): Swift_Transport_StreamBuffer->_establishSocketConnection() #1 /home/zayavki/public_html/lib/classes/Swift/Transport/AbstractSmtpTransport.php(113): Swift_Transport_StreamBuffer->initialize(Array) #2 /home/zayavki/public_html/lib/classes/Swift/Mailer.php(79): Swift_Transport_AbstractSmtpTransport->start() #3 /home/zayavki/public_html/index_2.php(68): Swift_Mailer->send(Object(Swift_Message)) #4 {main} thrown in /home/zayavki/public_html/lib/classes/Swift/Transport/StreamBuffer.php on line 269 

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения