Opencart: Add bcc and cc in emails

Posted: August 6, 2013 by Sankar Vijayakumar in OpenCart, Php
Tags: , , , , ,
How to add cc mails in opencart?

Here’s it, just 1 file needs to be modified:

system\library\mail.php

  1. After “protected $to;” add:
    protected $cc;
  2. Below “public function setTo($to) {” function add:
    public function setCc($cc) {
    $this->cc = $cc;
    }
  3. Under”$header .= “Content-Type: text/html;\n”;” function add:
    if($this->cc){
    if (is_array($this->cc)) {
    if(is_array($this->to)){
    foreach($this->to as $to_email){
    foreach (array_keys($this->cc, $to_email) as $key) {
    unset($this->cc[$key]);
    }
    }
    }else{
    foreach (array_keys($this->cc, $this->to) as $key) {
    unset($this->cc[$key]);
    }
    }
    $this->cc = array_values(array_unique($this->cc));
    $cc = implode(‘,’, $this->cc);
    $header .= “cc: “.$cc.”\n”;
    }else if(($this->cc != $this->to) || (is_array($this->to) && !in_array($this->cc,$this->to))){
    $cc = $this->cc;
    $header .= “cc: “.$cc.”\n”;
    }
    }

Once the above steps are done add cc emails like:

$mail->setCc(array(“testing@testing.com”,”sanker03@yahoo.com“,$this->config->get(‘config_email’)));

How to add bcc mails in opencart?

Same as above, just 1 file needs to be modified:

system\library\mail.php

  1. After “protected $to;” add:
    protected $bcc;
  2. Below “public function setTo($to) {” function add:
    public function setBcc($bcc) {
    $this->bcc = $bcc;
    }
  3. Under”$header .= “Content-Type: text/html;\n”;” function add:
    if($this->bcc){
    if (is_array($this->bcc)) {
    if(is_array($this->to)){
    foreach($this->to as $to_email){
    foreach (array_keys($this->bcc, $to_email) as $key) {
    unset($this->bcc[$key]);
    }
    }
    }else{
    foreach (array_keys($this->bcc, $this->to) as $key) {
    unset($this->bcc[$key]);
    }
    }
    $this->bcc = array_values(array_unique($this->bcc));
    $bcc = implode(‘,’, $this->bcc);
    $header .= “bcc: “.$bcc.”\n”;
    }else if(($this->bcc != $this->to) || (is_array($this->to) && !in_array($this->bcc,$this->to))){
    $bcc = $this->bcc;
    $header .= “bcc: “.$bcc.”\n”;
    }
    }

Once the above steps are done add bcc emails like:

$mail->setBcc(array(“testing@testing.com”,”sanker03@yahoo.com“,$this->config->get(‘config_email’)));

Happy Coding 😀 !!

Advertisements
Comments
  1. Steve says:

    Where do I add the line:
    $mail->setCc(array(“testing@testing.com”,”sanker03@yahoo.com“,$this->config->get(‘config_email’)));

    ?

    Thanks

    steve

    Like

  2. Sujith says:

    Its not shown cc email in email header

    Like

  3. Mukesh Kumar says:

    Hello Mr. Sankar,

    Thanks for this nice informative post, can explain where should i post this code

    $mail->setCc(array(“testing@testing.com”,”sanker03@yahoo.com“,$this->config->get(‘config_email’)));

    please show me the example as well…

    Thanks
    Mukesh Kumar

    Like

  4. Anees says:

    Hi,

    I have tried as you instructed for bcc email, but is not working. I think i have missed something.

    Here is my code.

    $value) {
    $this->$key = $value;
    }
    }

    public function setTo($to) {
    $this->to = $to;
    }

    public function setFrom($from) {
    $this->from = $from;
    }

    public function setSender($sender) {
    $this->sender = $sender;
    }

    public function setReplyTo($reply_to) {
    $this->replyto = $reply_to;
    }

    public function setSubject($subject) {
    $this->subject = $subject;
    }

    public function setText($text) {
    $this->text = $text;
    }

    public function setHtml($html) {
    $this->html = $html;
    }

    public function addAttachment($filename) {
    $this->attachments[] = $filename;
    }

    public function send() {
    if (!$this->to) {
    trigger_error(‘Error: E-Mail to required!’);
    exit();
    }

    if (!$this->from) {
    trigger_error(‘Error: E-Mail from required!’);
    exit();
    }

    if (!$this->sender) {
    trigger_error(‘Error: E-Mail sender required!’);
    exit();
    }

    if (!$this->subject) {
    trigger_error(‘Error: E-Mail subject required!’);
    exit();
    }

    if ((!$this->text) && (!$this->html)) {
    trigger_error(‘Error: E-Mail message required!’);
    exit();
    }

    if (!$this->replyto) {
    $this->setReplyTo($this->sender);
    }

    if (is_array($this->to)) {
    $to = implode(‘,’, $this->to);
    } else {
    $to = $this->to;
    }

    $boundary = ‘—-=_NextPart_’ . md5(time());

    $header = ‘MIME-Version: 1.0’ . $this->newline;

    if ($this->protocol != ‘mail’) {
    $header .= ‘To: ‘ . $to . $this->newline;
    $header .= ‘Subject: ‘ . ‘=?UTF-8?B?’ . base64_encode($this->subject) . ‘?=’ . $this->newline;
    }

    $header .= ‘Date: ‘ . date(‘D, d M Y H:i:s O’) . $this->newline;
    $header .= ‘From: =?UTF-8?B?’ . base64_encode($this->sender) . ‘?=’ . ‘ from . ‘>’ . $this->newline;
    $header .= ‘Reply-To: =?UTF-8?B?’ . base64_encode($this->replyto) . ‘?=’ . ‘ from . ‘>’ . $this->newline;
    $header .= ‘Return-Path: ‘ . $this->from . $this->newline;
    $header .= ‘X-Mailer: PHP/’ . phpversion() . $this->newline;
    $header .= ‘Content-Type: multipart/related; boundary=”‘ . $boundary . ‘”‘ . $this->newline . $this->newline;

    if (!$this->html) {
    $message = ‘–‘ . $boundary . $this->newline;
    $message .= ‘Content-Type: text/plain; charset=”utf-8″‘ . $this->newline;
    $message .= ‘Content-Transfer-Encoding: 8bit’ . $this->newline . $this->newline;
    $message .= $this->text . $this->newline;
    } else {
    $message = ‘–‘ . $boundary . $this->newline;
    $message .= ‘Content-Type: multipart/alternative; boundary=”‘ . $boundary . ‘_alt”‘ . $this->newline . $this->newline;
    $message .= ‘–‘ . $boundary . ‘_alt’ . $this->newline;
    $message .= ‘Content-Type: text/plain; charset=”utf-8″‘ . $this->newline;
    $message .= ‘Content-Transfer-Encoding: 8bit’ . $this->newline . $this->newline;

    if ($this->text) {
    $message .= $this->text . $this->newline;
    } else {
    $message .= ‘This is a HTML email and your email client software does not support HTML email!’ . $this->newline;
    }

    $message .= ‘–‘ . $boundary . ‘_alt’ . $this->newline;
    $message .= ‘Content-Type: text/html; charset=”utf-8″‘ . $this->newline;
    $message .= ‘Content-Transfer-Encoding: 8bit’ . $this->newline . $this->newline;
    $message .= $this->html . $this->newline;
    $message .= ‘–‘ . $boundary . ‘_alt–‘ . $this->newline;
    }

    foreach ($this->attachments as $attachment) {
    if (file_exists($attachment)) {
    $handle = fopen($attachment, ‘r’);

    $content = fread($handle, filesize($attachment));

    fclose($handle);

    $message .= ‘–‘ . $boundary . $this->newline;
    $message .= ‘Content-Type: application/octet-stream; name=”‘ . basename($attachment) . ‘”‘ . $this->newline;
    $message .= ‘Content-Transfer-Encoding: base64’ . $this->newline;
    $message .= ‘Content-Disposition: attachment; filename=”‘ . basename($attachment) . ‘”‘ . $this->newline;
    $message .= ‘Content-ID: ‘ . $this->newline;
    $message .= ‘X-Attachment-Id: ‘ . basename(urlencode($attachment)) . $this->newline . $this->newline;
    $message .= chunk_split(base64_encode($content));
    }
    }

    $message .= ‘–‘ . $boundary . ‘–‘ . $this->newline;

    if ($this->protocol == ‘mail’) {
    ini_set(‘sendmail_from’, $this->from);

    if ($this->parameter) {
    mail($to, ‘=?UTF-8?B?’ . base64_encode($this->subject) . ‘?=’, $message, $header, $this->parameter);
    } else {
    mail($to, ‘=?UTF-8?B?’ . base64_encode($this->subject) . ‘?=’, $message, $header);
    }
    } elseif ($this->protocol == ‘smtp’) {
    $tls = substr($this->smtp_hostname, 0, 3) == ‘tls’;
    $hostname = $tls ? substr($this->smtp_hostname, 6) : $this->smtp_hostname;

    $handle = fsockopen($hostname, $this->smtp_port, $errno, $errstr, $this->smtp_timeout);

    if (!$handle) {
    trigger_error(‘Error: ‘ . $errstr . ‘ (‘ . $errno . ‘)’);
    exit();
    } else {
    if (substr(PHP_OS, 0, 3) != ‘WIN’) {
    socket_set_timeout($handle, $this->smtp_timeout, 0);
    }

    while ($line = fgets($handle, 515)) {
    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    fputs($handle, ‘EHLO ‘ . getenv(‘SERVER_NAME’) . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 250) {
    trigger_error(‘Error: EHLO not accepted from server!’);
    exit();
    }

    if ($tls) {
    fputs($handle, ‘STARTTLS’ . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 220) {
    trigger_error(‘Error: STARTTLS not accepted from server!’);
    exit();
    }

    stream_socket_enable_crypto($handle, true, STREAM_CRYPTO_METHOD_TLS_CLIENT);
    }

    if (!empty($this->smtp_username) && !empty($this->smtp_password)) {
    fputs($handle, ‘EHLO ‘ . getenv(‘SERVER_NAME’) . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 250) {
    trigger_error(‘Error: EHLO not accepted from server!’);
    exit();
    }

    fputs($handle, ‘AUTH LOGIN’ . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 334) {
    trigger_error(‘Error: AUTH LOGIN not accepted from server!’);
    exit();
    }

    fputs($handle, base64_encode($this->smtp_username) . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 334) {
    trigger_error(‘Error: Username not accepted from server!’);
    exit();
    }

    fputs($handle, base64_encode($this->smtp_password) . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 235) {
    trigger_error(‘Error: Password not accepted from server!’);
    exit();
    }
    } else {
    fputs($handle, ‘HELO ‘ . getenv(‘SERVER_NAME’) . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 250) {
    trigger_error(‘Error: HELO not accepted from server!’);
    exit();
    }
    }

    if ($this->verp) {
    fputs($handle, ‘MAIL FROM: from . ‘>XVERP’ . “\r\n”);
    } else {
    fputs($handle, ‘MAIL FROM: from . ‘>’ . “\r\n”);
    }

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 250) {
    trigger_error(‘Error: MAIL FROM not accepted from server!’);
    exit();
    }

    if (!is_array($this->to)) {
    fputs($handle, ‘RCPT TO: to . ‘>’ . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if ((substr($reply, 0, 3) != 250) && (substr($reply, 0, 3) != 251)) {
    trigger_error(‘Error: RCPT TO not accepted from server!’);
    exit();
    }
    } else {
    foreach ($this->to as $recipient) {
    fputs($handle, ‘RCPT TO: ‘ . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if ((substr($reply, 0, 3) != 250) && (substr($reply, 0, 3) != 251)) {
    trigger_error(‘Error: RCPT TO not accepted from server!’);
    exit();
    }
    }
    }

    fputs($handle, ‘DATA’ . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 354) {
    trigger_error(‘Error: DATA not accepted from server!’);
    exit();
    }

    // According to rfc 821 we should not send more than 1000 including the CRLF
    $message = str_replace(“\r\n”, “\n”, $header . $message);
    $message = str_replace(“\r”, “\n”, $message);

    $lines = explode(“\n”, $message);

    foreach ($lines as $line) {
    $results = str_split($line, 998);

    foreach ($results as $result) {
    if (substr(PHP_OS, 0, 3) != ‘WIN’) {
    fputs($handle, $result . “\r\n”);
    } else {
    fputs($handle, str_replace(“\n”, “\r\n”, $result) . “\r\n”);
    }
    }
    }

    fputs($handle, ‘.’ . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 250) {
    trigger_error(‘Error: DATA not accepted from server!’);
    exit();
    }

    fputs($handle, ‘QUIT’ . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 221) {
    trigger_error(‘Error: QUIT not accepted from server!’);
    exit();
    }

    fclose($handle);
    }
    }
    }
    }

    Can you add the additional codes for bcc and post it.

    This would be a biggest help for me.
    Thanks in advance

    Like

  5. Anees says:

    hi i have followed all your instructions but its not working. can you help me in this regards. I am using OC 2.0.1.1 I have attached the mail.php file in my previous comment.

    Like

  6. pmsfddavid says:

    Thanks for your share.

    Like

  7. raghu says:

    hi i have followed all your instructions but its not working. can you help me in this regards. I am using OC 2.0.3.1 I have attached the mail.php file in my previous comment.

    Like

  8. raghu says:

    $value) {
    $this->$key = $value;
    }
    }

    public function setTo($to) {
    $this->to = $to;
    }

    public function setBcc($bcc) {
    $this->bcc = $bcc;
    }

    public function setFrom($from) {
    $this->from = $from;
    }

    public function setSender($sender) {
    $this->sender = $sender;
    }

    public function setReplyTo($reply_to) {
    $this->reply_to = $reply_to;
    }

    public function setSubject($subject) {
    $this->subject = $subject;
    }

    public function setText($text) {
    $this->text = $text;
    }

    public function setHtml($html) {
    $this->html = $html;
    }

    public function addAttachment($filename) {
    $this->attachments[] = $filename;
    }

    public function send() {
    if (!$this->to) {
    trigger_error(‘Error: E-Mail to required!’);
    exit();
    }

    if (!$this->from) {
    trigger_error(‘Error: E-Mail from required!’);
    exit();
    }

    if (!$this->sender) {
    trigger_error(‘Error: E-Mail sender required!’);
    exit();
    }

    if (!$this->subject) {
    trigger_error(‘Error: E-Mail subject required!’);
    exit();
    }

    if ((!$this->text) && (!$this->html)) {
    trigger_error(‘Error: E-Mail message required!’);
    exit();
    }

    if (is_array($this->to)) {
    $to = implode(‘,’, $this->to);
    } else {
    $to = $this->to;
    }

    $boundary = ‘—-=_NextPart_’ . md5(time());

    $header = ‘MIME-Version: 1.0’ . $this->newline;

    if ($this->protocol != ‘mail’) {
    $header .= ‘To: ‘ . $to . $this->newline;
    $header .= ‘Subject: =?UTF-8?B?’ . base64_encode($this->subject) . ‘?=’ . $this->newline;
    }

    if($this->bcc){
    if (is_array($this->bcc)) {
    if(is_array($this->to)){
    foreach($this->to as $to_email){
    foreach (array_keys($this->bcc, $to_email) as $key) {
    unset($this->bcc[$key]);
    }
    }
    }else{
    foreach (array_keys($this->bcc, $this->to) as $key) {
    unset($this->bcc[$key]);
    }
    }
    $this->bcc = array_values(array_unique($this->bcc));
    $bcc = implode(‘,’, $this->bcc);
    $header .= ‘Bcc: ‘.$bcc.$this->newline;
    }else if(($this->bcc != $this->to) || (is_array($this->to) && !in_array($this->bcc,$this->to))){
    $bcc = $this->bcc;
    $header .= ‘Bcc: ‘.$bcc.$this->newline;
    }
    }

    $header .= ‘Date: ‘ . date(‘D, d M Y H:i:s O’) . $this->newline;
    $header .= ‘From: =?UTF-8?B?’ . base64_encode($this->sender) . ‘?=’ . ‘ from . ‘>’ . $this->newline;

    if (!$this->reply_to) {
    $header .= ‘Reply-To: =?UTF-8?B?’ . base64_encode($this->sender) . ‘?=’ . ‘ from . ‘>’ . $this->newline;
    } else {
    $header .= ‘Reply-To: =?UTF-8?B?’ . base64_encode($this->reply_to) . ‘?=’ . ‘ from . ‘>’ . $this->newline;
    }

    $header .= ‘Return-Path: ‘ . $this->from . $this->newline;
    $header .= ‘X-Mailer: PHP/’ . phpversion() . $this->newline;
    $header .= ‘Content-Type: multipart/related; boundary=”‘ . $boundary . ‘”‘ . $this->newline . $this->newline;

    if (!$this->html) {
    $message = ‘–‘ . $boundary . $this->newline;
    $message .= ‘Content-Type: text/plain; charset=”utf-8″‘ . $this->newline;
    $message .= ‘Content-Transfer-Encoding: 8bit’ . $this->newline . $this->newline;
    $message .= $this->text . $this->newline;
    } else {
    $message = ‘–‘ . $boundary . $this->newline;
    $message .= ‘Content-Type: multipart/alternative; boundary=”‘ . $boundary . ‘_alt”‘ . $this->newline . $this->newline;
    $message .= ‘–‘ . $boundary . ‘_alt’ . $this->newline;
    $message .= ‘Content-Type: text/plain; charset=”utf-8″‘ . $this->newline;
    $message .= ‘Content-Transfer-Encoding: 8bit’ . $this->newline . $this->newline;

    if ($this->text) {
    $message .= $this->text . $this->newline;
    } else {
    $message .= ‘This is a HTML email and your email client software does not support HTML email!’ . $this->newline;
    }

    $message .= ‘–‘ . $boundary . ‘_alt’ . $this->newline;
    $message .= ‘Content-Type: text/html; charset=”utf-8″‘ . $this->newline;
    $message .= ‘Content-Transfer-Encoding: 8bit’ . $this->newline . $this->newline;
    $message .= $this->html . $this->newline;
    $message .= ‘–‘ . $boundary . ‘_alt–‘ . $this->newline;
    }

    foreach ($this->attachments as $attachment) {
    if (file_exists($attachment)) {
    $handle = fopen($attachment, ‘r’);

    $content = fread($handle, filesize($attachment));

    fclose($handle);

    $message .= ‘–‘ . $boundary . $this->newline;
    $message .= ‘Content-Type: application/octet-stream; name=”‘ . basename($attachment) . ‘”‘ . $this->newline;
    $message .= ‘Content-Transfer-Encoding: base64’ . $this->newline;
    $message .= ‘Content-Disposition: attachment; filename=”‘ . basename($attachment) . ‘”‘ . $this->newline;
    $message .= ‘Content-ID: ‘ . $this->newline;
    $message .= ‘X-Attachment-Id: ‘ . basename(urlencode($attachment)) . $this->newline . $this->newline;
    $message .= chunk_split(base64_encode($content));
    }
    }

    $message .= ‘–‘ . $boundary . ‘–‘ . $this->newline;

    if ($this->protocol == ‘mail’) {
    ini_set(‘sendmail_from’, $this->from);

    if ($this->parameter) {
    mail($to, ‘=?UTF-8?B?’ . base64_encode($this->subject) . ‘?=’, $message, $header, $this->parameter);
    } else {
    mail($to, ‘=?UTF-8?B?’ . base64_encode($this->subject) . ‘?=’, $message, $header);
    }
    } elseif ($this->protocol == ‘smtp’) {
    $tls = substr($this->smtp_hostname, 0, 3) == ‘tls’;
    $hostname = $tls ? substr($this->smtp_hostname, 6) : $this->smtp_hostname;

    $handle = fsockopen($hostname, $this->smtp_port, $errno, $errstr, $this->smtp_timeout);

    if (!$handle) {
    trigger_error(‘Error: ‘ . $errstr . ‘ (‘ . $errno . ‘)’);
    exit();
    } else {
    if (substr(PHP_OS, 0, 3) != ‘WIN’) {
    socket_set_timeout($handle, $this->smtp_timeout, 0);
    }

    while ($line = fgets($handle, 515)) {
    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    fputs($handle, ‘EHLO ‘ . getenv(‘SERVER_NAME’) . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 250) {
    trigger_error(‘Error: EHLO not accepted from server!’);
    exit();
    }

    if ($tls) {
    fputs($handle, ‘STARTTLS’ . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 220) {
    trigger_error(‘Error: STARTTLS not accepted from server!’);
    exit();
    }

    stream_socket_enable_crypto($handle, true, STREAM_CRYPTO_METHOD_TLS_CLIENT);
    }

    if (!empty($this->smtp_username) && !empty($this->smtp_password)) {
    fputs($handle, ‘EHLO ‘ . getenv(‘SERVER_NAME’) . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 250) {
    trigger_error(‘Error: EHLO not accepted from server!’);
    exit();
    }

    fputs($handle, ‘AUTH LOGIN’ . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 334) {
    trigger_error(‘Error: AUTH LOGIN not accepted from server!’);
    exit();
    }

    fputs($handle, base64_encode($this->smtp_username) . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 334) {
    trigger_error(‘Error: Username not accepted from server!’);
    exit();
    }

    fputs($handle, base64_encode($this->smtp_password) . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 235) {
    trigger_error(‘Error: Password not accepted from server!’);
    exit();
    }
    } else {
    fputs($handle, ‘HELO ‘ . getenv(‘SERVER_NAME’) . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 250) {
    trigger_error(‘Error: HELO not accepted from server!’);
    exit();
    }
    }

    if ($this->verp) {
    fputs($handle, ‘MAIL FROM: from . ‘>XVERP’ . “\r\n”);
    } else {
    fputs($handle, ‘MAIL FROM: from . ‘>’ . “\r\n”);
    }

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 250) {
    trigger_error(‘Error: MAIL FROM not accepted from server!’);
    exit();
    }

    if (!is_array($this->to)) {
    fputs($handle, ‘RCPT TO: to . ‘>’ . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if ((substr($reply, 0, 3) != 250) && (substr($reply, 0, 3) != 251)) {
    trigger_error(‘Error: RCPT TO not accepted from server!’);
    exit();
    }
    } else {
    foreach ($this->to as $recipient) {
    fputs($handle, ‘RCPT TO: ‘ . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if ((substr($reply, 0, 3) != 250) && (substr($reply, 0, 3) != 251)) {
    trigger_error(‘Error: RCPT TO not accepted from server!’);
    exit();
    }
    }
    }

    fputs($handle, ‘DATA’ . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 354) {
    trigger_error(‘Error: DATA not accepted from server!’);
    exit();
    }

    // According to rfc 821 we should not send more than 1000 including the CRLF
    $message = str_replace(“\r\n”, “\n”, $header . $message);
    $message = str_replace(“\r”, “\n”, $message);

    $lines = explode(“\n”, $message);

    foreach ($lines as $line) {
    $results = str_split($line, 998);

    foreach ($results as $result) {
    if (substr(PHP_OS, 0, 3) != ‘WIN’) {
    fputs($handle, $result . “\r\n”);
    } else {
    fputs($handle, str_replace(“\n”, “\r\n”, $result) . “\r\n”);
    }
    }
    }

    fputs($handle, ‘.’ . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 250) {
    trigger_error(‘Error: DATA not accepted from server!’);
    exit();
    }

    fputs($handle, ‘QUIT’ . “\r\n”);

    $reply = ”;

    while ($line = fgets($handle, 515)) {
    $reply .= $line;

    if (substr($line, 3, 1) == ‘ ‘) {
    break;
    }
    }

    if (substr($reply, 0, 3) != 221) {
    trigger_error(‘Error: QUIT not accepted from server!’);
    exit();
    }

    fclose($handle);
    }
    }
    }
    }

    Like

How's it? Your comments and suggestions...

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s