2014-02-21 3 views
0

Вот простой код для отправки почты SMTP для отправки почты через аутентификацию пользователя. Код работает отлично для To:, но Bcc: не работает. Когда мы используем обычную функцию php mail(), мы включаем Bcc: в заголовок. Но я не уверен, как использовать Bcc: здесь используется протокол SMTP.SMTP Bcc mail не работает

$SmtpServer="127.0.0.1"; 
$SmtpPort="25"; //default 
$SmtpUser="username"; 
$SmtpPass="password"; 

class SMTPClient 
{ 

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

$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; 
} 
} 

function SendMail() 
{ 
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\nBcc: ".$bcc."\r\nFrom: <".$this->from.">\r\nSubject:".$this->subject."\r\n\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; 
} 
} 

$to = '[email protected]'; 
$from = '[email protected]'; 
$subject = 'test subject'; 
$body = 'body'; 
$bcc = '[email protected], [email protected], [email protected]'; 
$SMTPMail = new SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body, $bcc); 
$SMTPChat = $SMTPMail->SendMail(); 

Над кодом

+0

Вы проверили это раньше? http://stackoverflow.com/questions/16830673/wamp-send-mail-using-smtp-localhost – jycr753

+0

Попробуйте использовать библиотеку PHPMailer: https://github.com/Synchro/PHPMailer –

ответ

0

Поместите ОЦК в их адресов собственного "RCPT TO:" SMTP команды, удалить Bcc: заголовок.

В любом случае, не набирать коды ответов SMTP - это рецепт для проблем для отправителей ветчины (не спама).