Несколько вопросов о PHPMailer

Тема в разделе "Как сделать...", создана пользователем Twix007, 13 дек 2015.

  1. Twix007

    Twix007

    Регистр.:
    11 окт 2009
    Сообщения:
    216
    Симпатии:
    49
    Есть код отправки писем:

    Код:
               
                    $saltedlogin = generateHash($username);
                   
                    $to = $user->user_email;
                    $subject = $main_smarty->get_config_vars("PLIGG_PassEmail_Subject");
    
                    $body = sprintf(
                        $main_smarty->get_config_vars("PLIGG_PassEmail_PassBody"),
                        $main_smarty->get_config_vars("PLIGG_Visual_Name"),
                        $my_base_url . $my_pligg_base . '/login.php',
                        $user->user_login,
                        $password
                    );
                   
                    $headers = 'From: ' . $main_smarty->get_config_vars("PLIGG_PassEmail_From") . "\r\n";
                    $headers .= "Content-type: text/html; charset=utf-8\r\n";
                   
                    if (mail($to, $subject, $body, $headers))
    Нужно сделать его с html кодом, но ничего не работает... ткните плиз!

    Код:
                    $saltedlogin = generateHash($username);
                    $to = $user->user_email;
                    $subject = $main_smarty->get_config_vars("PLIGG_PassEmail_Subject");
                   
                    $username = $user->user_login;
                    $bodymesssuces = "<div> $username ...$password.... </div>";
                   
                    $headers = 'From: ' . $main_smarty->get_config_vars("PLIGG_PassEmail_From") . "\r\n";
                    $headers .= "Content-type: text/html; charset=utf-8\r\n";
       
               
                    if(phpnum()>=5)
                        require("libs/class.phpmailer5.php");
                    else
                        require("libs/class.phpmailer4.php");   
                   
                    $mail = new PHPMailer();
                    $mail->From = $main_smarty->get_config_vars('PLIGG_PassEmail_From');
                    $mail->FromName = $main_smarty->get_config_vars('PLIGG_PassEmail_Name');
                    $mail->AddAddress($to);
                    $mail->AddReplyTo($main_smarty->get_config_vars('PLIGG_PassEmail_From'));
                    $mail->IsHTML(true);
                    $mail->Subject = $subject;
                    $mail->CharSet = 'utf-8';
                    $mail->MsgHTML( $bodymesssuces );
                   
                    if (!$mail->Send())
     
  2. Twix007

    Twix007

    Регистр.:
    11 окт 2009
    Сообщения:
    216
    Симпатии:
    49
    И второй вопрос кодировка, стоит:
    Код:
    $headers .= "Content-type: text/html; charset=utf-8\r\n";
    +
    $mail->CharSet = 'utf-8';
    но проскакивает такое, 2 -3 буквьі в письме 100%
    Код:
    скоÐ �іюйте
    Пробовал такие вариантьі вместе и по отдельности, не помогает - может их отдельно настраивать нужно? (Ubuntu server)
    Код:
    $message = iconv("UTF-8", "WINDOWS-1251", $message);
    $message = mb_convert_encoding("UTF-8", "WINDOWS-1251", $message);
    $message = mb_detect_encoding($message , mb_detect_order(), true) === 'UTF-8' ? $message : mb_convert_encoding($message , 'UTF-8');
    
     
  3. funnywheel

    funnywheel WordPress developer

    Регистр.:
    6 авг 2010
    Сообщения:
    217
    Симпатии:
    147
    а зачем вы юзаете
    Код:
    $mail->MsgHTML
    если
    Код:
    $mail->body
    отправляет html нормально

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

    точно знаю, что такая конструкция работает, html поддерживает
    PHP:
      require_once 'path-to-phpmailer/PHPMailerAutoload.php';  // подключаем класс PHPMailer'a
      
    $mail = new PHPMailer();  // Создаем объект

      /* Этот кусок, если юзаем smtp нужно раскомментить и заполнить
      $mail->isSMTP(); // указываем использовать-ли smtp
      $mail->Host = 'smtp.yandex.ru'; // smtp-сервер
      $mail->SMTPAuth = true; // нужна-ли аутентификация на smtp-сервере?
      $mail->Username = ''; // логин для аутентификации, как правило адрес ящика вида mail@test.com
      $mail->Password = ''; // пароль
      $mail->SMTPSecure = 'ssl'; // тип шифрования ssl/tsl
      $mail->Port = '465'; // порт. у яши для ssl - 465, для tsl другой, если нужно будет, в доках яши есть все
      */

      
    $mail->CharSet 'utf-8'// кодировка письма
      
    $mail->From ''// email отправителя. если юзаете smtp - ставьте тот-же, что и в методе Username, иначе в половине почтовиков письмо в спам уйдет, в другой половине даже до спама не долетит
      
    $mail->FromName 'От Кого'// имя отправителя
      
    $mail->addAddress("email@test.com"); // мыло получателя
      
    $mail->isHTML(true); // включить поддержку html в письме?

      
    $mail->Subject "Тема сообщения"// тема письма
      
    $mail->Body "<div>Тело сообщения</div>"// тело сообщения, можно с html

      
    if ( $mail->send() ) { // отправляем письмо
        
    echo "Все ок"// если отправлено
      
    } else {
        echo 
    "Ошибка"// если не отправлено
      
    }