2013-05-14 7 views
-1

I SMTPClient класс mail utf-8 post, но я ничего не сделал! Пожалуйста, помогите мне получить спасибопесок smtp mail php class SMTPClient

class SMTPClient 
{ 

function SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body) 
{ 

$this->SmtpServer = $SmtpServer; 
$this->SmtpUser = base64_encode ($SmtpUser); 
$this->SmtpPass = base64_encode ($SmtpPass); 
$this->from = $from; 
$this->to = $to; 

$this->subject = $subject; 
$this->body = $body; 


if ($SmtpPort == "") 
{ 
$this->PortSMTP = 25; 
    }else{ 
$this->PortSMTP = $SmtpPort; 
} 


} 

/////////////////////////////////////////////////////////////////////// 
$to = $_POST['to']; 
$from =$_POST['from']; 
$subject = $_POST['sub']; 
$body = $_POST['message']; 
$SMTPMail = new SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body); 
$SMTPChat = $SMTPMail->SendMail(); 

Я нашел этот код здесь: http://url.lid.ir/KPyhfU

+0

Вы получаете ошибки? – Orangepill

+0

также это в старом формате php-класса ... функция 'SMTPClient' должна быть заменена на' public function __construct' – Orangepill

+0

Вся электронная почта отправляется, но я хочу отправить форматированный текст utf-8, который должен иметь utf-8 быть читаемым –

ответ

0

Изменение Defintion метода SendMail в SmtpClient

function SendMail ($charset = "utf-8", $contentType = "text/plain") 
{ 
    if ($SMTPIN = fsockopen ($this->SmtpServer, $this->PortSMTP)) 
    { 
     fputs ($SMTPIN, "EHLO ".$HTTP_HOST."\r\n"); 
     $talk["hello"] = fgets ($SMTPIN, 1024); 
     fputs($SMTPIN, "auth login\r\n"); 
     $talk["res"]=fgets($SMTPIN,1024); 
     fputs($SMTPIN, $this->SmtpUser."\r\n"); 
     $talk["user"]=fgets($SMTPIN,1024); 
     fputs($SMTPIN, $this->SmtpPass."\r\n"); 
     $talk["pass"]=fgets($SMTPIN,256); 
     fputs ($SMTPIN, "MAIL FROM: <".$this->from.">\r\n"); 
     $talk["From"] = fgets ($SMTPIN, 1024); 
     fputs ($SMTPIN, "RCPT TO: <".$this->to.">\r\n"); 
     $talk["To"] = fgets ($SMTPIN, 1024); 
     fputs($SMTPIN, "DATA\r\n"); 
     $talk["data"]=fgets($SMTPIN,1024); 
     fputs($SMTPIN, "To: <".$this->to.">\r\nFrom: <".$this->from.">\r\nSubject:".$this->subject."\r\n". 
     "Content-Type: ".$contentType."; ".$charset."\r\n\r\n".$this->body."\r\n.\r\n"); 
     $talk["send"]=fgets($SMTPIN,256); 
     //CLOSE CONNECTION AND EXIT ... 
     fputs ($SMTPIN, "QUIT\r\n"); 
     fclose($SMTPIN); 
    } 
    return $talk; 
} 
+0

Я хочу использовать тот же класс, но с utf8, но я не могу использовать этот код! –

+0

, вы должны ввести Content-Type с выносом charset, чтобы получить UTF-8. Этот класс собирает почтовый заголовок для вас, поэтому единственный способ сделать это - обновить класс или перегрузить его. Возможно, вам стоит взглянуть на более современное решение, такое как Zend_Mail. – Orangepill

+0

Я заменил функцию, но слова не читаются! –

0

Я нашел его! Наконец-то я нашел его! Это очень легко добавить по коду:

$this->subject = "=?UTF-8?B?" . base64_encode(html_entity_decode($this->subject, ENT_COMPAT, 'UTF-8')) . "?=".$subject;