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

Twix007

Гуру форума
Регистрация
11 Окт 2009
Сообщения
257
Реакции
57
Есть код отправки писем:

Код:
                $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())
 
И второй вопрос кодировка, стоит:
Код:
$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');
 
а зачем вы юзаете
Код:
$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 "Ошибка"; // если не отправлено
  }
 
Назад
Сверху