78230

OpenCart mail error on mail.php line 153

Question:

I'm getting this error on my OpenCart site while I trying to register using <strong>social media bundle plugin</strong>:

<blockquote>

Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/wankersh/public_html/system/library/mail.php on line 153Warning: fsockopen(): unable to connect to pds14.servikus.com :465 (php_network_getaddresses: getaddrinfo failed: Name or service not known) in /home/wankersh/public_html/system/library/mail.php on line 153Notice: Error: php_network_getaddresses: getaddrinfo failed: Name or service not known (0) in /home/wankersh/public_html/system/library/mail.php on line 156

</blockquote>

This is a code from mail.php:

<?php class Mail { protected $to; protected $from; protected $sender; protected $subject; protected $text; protected $html; protected $attachments = array(); public $protocol = 'mail'; public $hostname; public $username; public $password; public $port = 25; public $timeout = 5; public $newline = "\n"; public $crlf = "\r\n"; public $verp = false; public $parameter = ''; public function setTo($to) { $this->to = $to; } public function setFrom($from) { $this->from = $from; } public function setSender($sender) { $this->sender = $sender; } 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 = ''; $header .= 'MIME-Version: 1.0' . $this->newline; if ($this->protocol != 'mail') { $header .= 'To: ' . $to . $this->newline; $header .= 'Subject: ' . $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) . '?=' . ' <' . $this->from . '>' . $this->newline; $header .= 'Reply-To: ' . '=?UTF-8?B?' . base64_encode($this->sender) . '?=' . ' <' . $this->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: <' . basename(urlencode($attachment)) . '>' . $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') { $handle = fsockopen($this->hostname, $this->port, $errno, $errstr, $this->timeout); if (!$handle) { trigger_error('Error: ' . $errstr . ' (' . $errno . ')'); exit(); } else { if (substr(PHP_OS, 0, 3) != 'WIN') { socket_set_timeout($handle, $this->timeout, 0); } while ($line = fgets($handle, 515)) { if (substr($line, 3, 1) == ' ') { break; } } if (substr($this->hostname, 0, 3) == 'tls') { fputs($handle, 'STARTTLS' . $this->crlf); 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(); } } if (!empty($this->username) && !empty($this->password)) { fputs($handle, 'EHLO ' . getenv('SERVER_NAME') . $this->crlf); $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' . $this->crlf); $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->username) . $this->crlf); $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->password) . $this->crlf); $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') . $this->crlf); $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: <' . $this->from . '>XVERP' . $this->crlf); } else { fputs($handle, 'MAIL FROM: <' . $this->from . '>' . $this->crlf); } $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: <' . $this->to . '>' . $this->crlf); $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: <' . $recipient . '>' . $this->crlf); $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' . $this->crlf); $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 . $this->crlf); } else { fputs($handle, str_replace("\n", "\r\n", $result) . $this->crlf); } } } fputs($handle, '.' . $this->crlf); $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' . $this->crlf); $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); } } } } ?>

I created fb app regulary with no problems and connected with plugin. After clicking on fb login button, its ask me to allow app on my fb profile and after that bring me to step to fill informations, like country, postcode, address, etc. After filling that page, i get error i mention above. I noticed that when i try again with same fb profile, its autologin me. But, in administration there is no such a user <a href="http://screencast.com/t/jJrUOnLw" rel="nofollow">http://screencast.com/t/jJrUOnLw</a>.

I have latest version of OpenCart 1.5.6.4

I instantly created ticked and asked "social media bundle" support about what causing this problem.

This is their response:

<blockquote>

I believe this is a problem related to the email configuration of your store. It seems your store uses SMTP to send emails. I tried to sign up with the regular registration method and the same error message occured during this proccess. This leads me to believe that there is a misconfiguration in your store mail settings. You can check them by going to the Admin panel -> System -> Settings -> Your store -> Mail tab. Please pay attention to your SMTP credentials and configured SMTP port as more often than not the error stems from there.

</blockquote>

Hope this helps!

Regards, Angel Metaxov - iSenseLabs team

This is my opencart settings for mail: <a href="http://screencast.com/t/3KrPSpnlqcN" rel="nofollow">http://screencast.com/t/3KrPSpnlqcN</a>

If you need more information, let me know.

Stefan

<strong>Update:</strong> I talked with server guy, and he told me to use domain name in SMTP host.

After I tried to register manually (without plugin social login), I get this error:

<blockquote>

Notice: Error: EHLO not accepted from server! in /home/wankersh/public_html/system/library/mail.php on line 200`

</blockquote>

Answer1:

OpenCart has a bug with SMTP; read more on that <a href="http://www.opencart.com/index.php?route=extension/extension/info&extension_id=22107&filter_search=smtp" rel="nofollow">here</a>

You can fix it by configuring SMTP the right way as below;

The problem occurred here, on the last line with the value attributed to $mail->smtp_hostname:

if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { $mail = new Mail(); $mail->protocol = $this->config->get('config_mail_protocol'); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_host'); }

The solution: make it's value $this->config->get('config_mail_smtp_hostname') instead of the later, as seen in the snippet below;

if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { $mail = new Mail(); $mail->protocol = $this->config->get('config_mail_protocol'); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); }

Recommend

  • MongoDB Exception: Server reports wire version 0, but version of libmongoc requires at least 3
  • How do you use authentication with gmail for a PHP contact form?
  • Php mail function error, mail sent from wrong address
  • Hide '”' from inspect element
  • How to use PHPMailer without composer?
  • PHP to connect to Hotmail to send email?
  • Symfony2 Service Container - does get() return objects by reference or copy?
  • How to configure Joomla 1.7 SMTP email with a google apps email address
  • PHP - sending email with attachment does not show message content
  • How to reply a tweet using the Twitter gem?
  • get latest text entry of GROUP BY statement
  • jQuery and Uploadify session in the php file
  • how to convert open xml representation of word document into RTF format using c#.net 4.0?
  • How to get file download speed (transfer rate) with php?
  • How to select table rows/complete table?
  • Android - Material Design - NavigationView - How to put vertical scroll?
  • copying resource to sdcard gives a damaged file in android
  • Jquery UI tool tip close icon
  • DotNetZip - Calculate final zip size before calling Save(stream)
  • script to move all files from one location to another location
  • SSO with signing and signature validation doesn't work
  • ILMerge & Keep Assembly Name
  • Symfony2: How to get request parameter
  • Upload files with Ajax and Jquery
  • Do I've to free mysql result after storing it?
  • Warning: Can't call setState (or forceUpdate) on an unmounted component
  • Run Powershell script from inside other Powershell script with dynamic redirection to file
  • A cron job substitute?
  • json Serialization in asp
  • Load html files in TinyMce
  • How can I get HTML syntax highlighting in my editor for CakePHP?
  • Free memory of cv::Mat loaded using FileStorage API
  • How do I configure my settings file to work with unit tests?
  • IndexOutOfRangeException on multidimensional array despite using GetLength check
  • Django query for large number of relationships
  • costura.fody for a dll that references another dll
  • Why is Django giving me: 'first_name' is an invalid keyword argument for this function?
  • Binding checkboxes to object values in AngularJs
  • How can I use `wmic` in a Windows PE script?
  • How to push additional view controllers onto NavigationController but keep the TabBar?