Page 1 of 3
Mail/Smtp
Posted: Tue Aug 18, 2009 2:07 am
by kornovec
Hey,
Im sorry if im spamming, but i dont found any help to resolve this.
Id like to inform ppl about chnages of their order, BUT!
When im using MAIL nothing happend. When Im using SMTP with my datas nothing happend.
Can anybody help me with setting up emails?
Thanks very much!
K.
Re: Mail/Smtp
Posted: Tue Aug 18, 2009 6:56 am
by SuperJuice
This isn't a bug, this is a support question (can someone move it?)
You need to ask your host what settings you should use, and then fill in the email settings accordingly.
Re: Mail/Smtp
Posted: Tue Aug 18, 2009 3:01 pm
by kornovec
Have it filled correctly from my host - 100% working
Error log says: 2009-08-18 8:33:44 - PHP Notice: Undefined variable: action in /srv2/www/korn.cz/subdomains/pet/admin/view/template/tool/error_log.tpl on line 9
and when i try to send email through change in orders to notify customer there is alert: Error: AUTH LOGIN command failed!
Tried setting of gmail.com, seynam.cz nothing worked!
Maybe there is some problem in code?
Anybody here with working email interface????
Thanks!
K.
Re: Mail/Smtp
Posted: Tue Aug 18, 2009 8:13 pm
by Daniel
why can you not use the mail function?
why do you need to use SMTP?
by the way the error in your log has nothing to do with the email!
Re: Mail/Smtp
Posted: Wed Aug 19, 2009 12:30 am
by kornovec
Yup, you were all right! Im really sorry!
Installed on different host and use MAIL, all working! Informed previous host¨admin and they made MAIL function run correctly!
Please delete this topic and tahnk you very much again!
This program rulllleeeeeeeeeeeeees!!!!!!!!!!!!
K.
Re: Mail/Smtp
Posted: Thu Aug 20, 2009 4:02 am
by joaisbn
I'm having a similar problem. When you use the module for payment or try to use the "Contact Us" is displayed the message "Error: AUTH LOGIN command failed." I'm using email as SMTP, because function mail () is disabled on the server.
How can I fix this?
Re: Mail/Smtp
Posted: Thu Aug 20, 2009 3:11 pm
by kornovec
Do it like i did. Contact your host to fix mail function...
If not, change your hosting
K.
Re: Mail/Smtp
Posted: Fri Aug 21, 2009 7:02 pm
by nacho
Good Day Colleagues,
i have this problem in my admin -> configuration -> Error log show this error
2009-08-21 12:38:55 - PHP Notice: Undefined variable: action in /var/www/fuego/empresas/tienda/admin/view/template/tool/error_log.tpl on line 9
this error show when visit the same section of admin -> configuration -> Error log is error from code?¿
this variable have this name or not?¿ not understand
<form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form">
anyone can helpme to remove this error message ?¿
Thanks.
Nacho Alegre.
Re: Mail/Smtp
Posted: Fri Aug 28, 2009 3:02 am
by sevenate
Bump, same issue here.
Re: Mail/Smtp
Posted: Fri Aug 28, 2009 6:21 am
by Daniel
nacho wrote:Good Day Colleagues,
i have this problem in my admin -> configuration -> Error log show this error
2009-08-21 12:38:55 - PHP Notice: Undefined variable: action in /var/www/fuego/empresas/tienda/admin/view/template/tool/error_log.tpl on line 9
this error show when visit the same section of admin -> configuration -> Error log is error from code?¿
this variable have this name or not?¿ not understand
<form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form">
anyone can helpme to remove this error message ?¿
Thanks.
Nacho Alegre.
ignore it.
Re: Mail/Smtp
Posted: Fri Sep 04, 2009 6:17 am
by sevenate
Any fix for SMTP on OC 1.3.2 yet? As mentioned elsewhere... the Contact Us form, and Order submission *appears* to work correctly, but no e-mail is sent/received.
Re: Mail/Smtp
Posted: Sun Sep 27, 2009 12:05 am
by axxies
What about this bug with SMTP? This is a major showstopper as I see it. Not all can stop using SMTP.
Re: Mail/Smtp
Posted: Sun Sep 27, 2009 5:44 am
by JNeuhoff
I found the current 1.3.2 release of the mail.php file in OpenCart to be buggy, too. In particular, it has problems with SMTP servers who return multi-line responses from e.g HELO and other commands. I have replaced the code with PHPMailer, which works fine for SMTP.
Re: Mail/Smtp
Posted: Sun Sep 27, 2009 6:32 am
by Daniel
I posted a new fixed version somewhere here it is again:
Code: Select all
<?php
final class Mail {
protected $to;
protected $from;
protected $sender;
protected $subject;
protected $text;
protected $html;
protected $attachments = array();
protected $protocol = 'mail';
protected $hostname;
protected $username;
protected $password;
protected $port = 25;
protected $timeout = 5;
public $charset = 'utf-8';
public $eol = "\r\n";
public function __construct($protocol = 'mail', $hostname = '', $username = '', $password = '', $port = '25', $timeout = '5') {
$this->protocol = $protocol;
$this->hostname = $hostname;
$this->username = $username;
$this->password = $password;
$this->port = $port;
$this->timeout = $timeout;
}
public function setTo($to) {
$this->to = $to;
}
public function setFrom($from) {
$this->from = $from;
}
public function addheader($header, $value) {
$this->headers[$header] = $value;
}
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($attachments) {
$this->attachments[] = $attachments;
}
public function send() {
if (!$this->to) {
exit('Error: E-Mail to required!');
}
if (!$this->from) {
exit('Error: E-Mail from required!');
}
if (!$this->sender) {
exit('Error: E-Mail sender required!');
}
if (!$this->subject) {
exit('Error: E-Mail subject required!');
}
if ((!$this->text) && (!$this->html)) {
exit('Error: E-Mail message required!');
}
if (is_array($this->to)) {
$to = implode(',', $this->to);
} else {
$to = $this->to;
}
$boundary = '----=_NextPart_' . md5(rand());
$header = '';
if ($this->protocol != 'mail') {
$header .= 'To: ' . $to . $this->eol;
$header .= 'Subject: ' . $this->subject . $this->eol;
}
$header .= 'From: ' . $this->sender . '<' . $this->from . '>' . $this->eol;
$header .= 'Reply-To: ' . $this->sender . '<' . $this->from . '>' . $this->eol;
$header .= 'Return-Path: ' . $this->from . $this->eol;
$header .= 'X-Mailer: PHP/' . phpversion() . $this->eol;
$header .= 'MIME-Version: 1.0' . $this->eol;
$header .= 'Content-Type: multipart/mixed; boundary="' . $boundary . '"' . $this->eol;
if (!$this->html) {
$message = '--' . $boundary . $this->eol;
$message .= 'Content-Type: text/plain; charset="' . $this->charset . '"' . $this->eol;
$message .= 'Content-Transfer-Encoding: base64' . $this->eol . $this->eol;
$message .= chunk_split(base64_encode($this->text));
} else {
$message = '--' . $boundary . $this->eol;
$message .= 'Content-Type: multipart/alternative; boundary="' . $boundary . '_alt"' . $this->eol . $this->eol;
$message .= '--' . $boundary . '_alt' . $this->eol;
$message .= 'Content-Type: text/plain; charset="' . $this->charset . '"' . $this->eol;
$message .= 'Content-Transfer-Encoding: base64' . $this->eol;
if ($this->text) {
$message .= chunk_split(base64_encode($this->text));
} else {
$message .= chunk_split(base64_encode('This is a HTML email and your email client software does not support HTML email!'));
}
$message .= '--' . $boundary . '_alt' . $this->eol;
$message .= 'Content-Type: text/html; charset="' . $this->charset . '"' . $this->eol;
$message .= 'Content-Transfer-Encoding: base64' . $this->eol . $this->eol;
$message .= chunk_split(base64_encode($this->html));
$message .= '--' . $boundary . '_alt--' . $this->eol;
}
foreach ($this->attachments as $attachment) {
$filename = basename($attachment);
$handle = fopen($attachment, 'r');
$content = fread($handle, filesize($attachment));
fclose($handle);
$message .= '--' . $boundary . $this->eol;
$message .= 'Content-Type: application/octetstream' . $this->eol;
$message .= 'Content-Transfer-Encoding: base64' . $this->eol;
$message .= 'Content-Disposition: attachment; filename="' . $filename . '"' . $this->eol;
$message .= 'Content-ID: <' . $filename . '>' . $this->eol . $this->eol;
$message .= chunk_split(base64_encode($content));
}
if ($this->protocol == 'mail') {
ini_set('sendmail_from', $this->from);
mail($to, $this->subject, $message, $header);
} elseif ($this->protocol == 'smtp') {
$handle = fsockopen($this->hostname, $this->port, $errno, $errstr, $this->timeout);
if (!$handle) {
error_log('Error: ' . $errstr . ' (' . $errno . ')');
} 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 (!empty($this->username) && !empty($this->password)) {
fputs($handle, 'EHLO ' . getenv('SERVER_NAME') . $this->eol);
$reply = '';
while ($line = fgets($handle, 515)) {
$reply .= $line;
if (substr($line, 3, 1) == ' ') {
break;
}
}
if (substr($reply, 0, 3) != 250) {
error_log('Error: EHLO not accepted from server!');
}
fputs($handle, 'AUTH LOGIN ' . $this->eol);
$reply = '';
while ($line = fgets($handle, 515)) {
$reply .= $line;
if (substr($line, 3, 1) == ' ') {
break;
}
}
if (substr($reply, 0, 3) != 334) {
error_log('Error: AUTH LOGIN not accepted from server!');
}
fputs($handle, base64_encode($this->username) . $this->eol);
$reply = '';
while ($line = fgets($handle, 515)) {
$reply .= $line;
if (substr($line, 3, 1) == ' ') {
break;
}
}
if (substr($reply, 0, 3) != 334) {
error_log('Error: Username not accepted from server!');
}
fputs($handle, base64_encode($this->password) . $this->eol);
$reply = '';
while ($line = fgets($handle, 515)) {
$reply .= $line;
if (substr($line, 3, 1) == ' ') {
break;
}
}
if (substr($reply, 0, 3) != 235) {
error_log('Error: Password not accepted from server!');
}
} else {
fputs($handle, 'HELO ' . getenv('SERVER_NAME') . $this->eol);
$reply = '';
while ($line = fgets($handle, 515)) {
$reply .= $line;
if (substr($line, 3, 1) == ' ') {
break;
}
}
if (substr($reply, 0, 3) != 250) {
error_log('Error: HELO not accepted from server!');
}
}
fputs($handle, 'MAIL FROM: <' . $this->from . '>XVERP' . $this->eol);
$reply = '';
while ($line = fgets($handle, 515)) {
$reply .= $line;
if (substr($line, 3, 1) == ' ') {
break;
}
}
if (substr($reply, 0, 3) != 250) {
error_log('Error: MAIL FROM not accepted from server!');
}
if (!is_array($this->to)) {
fputs($handle, 'RCPT TO: <' . $this->to . '>' . $this->eol);
$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)) {
error_log('Error: RCPT TO not accepted from server!');
}
} else {
foreach ($this->to as $recipient) {
fputs($handle, 'RCPT TO: <' . $recipient . '>' . $this->eol);
$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)) {
error_log('Error: RCPT TO not accepted from server!');
}
}
}
fputs($handle, 'DATA' . $this->eol);
$reply = '';
while ($line = fgets($handle, 515)) {
$reply .= $line;
if (substr($line, 3, 1) == ' ') {
break;
}
}
if (substr($reply, 0, 3) != 354) {
error_log('Error: DATA not accepted from server!');
}
fputs($handle, $header . $message . $this->eol);
fputs($handle, '.' . $this->eol);
$reply = '';
while ($line = fgets($handle, 515)) {
$reply .= $line;
if (substr($line, 3, 1) == ' ') {
break;
}
}
if (substr($reply, 0, 3) != 250) {
error_log('Error: DATA not accepted from server!');
}
fputs($handle, 'QUIT' . $this->eol);
$reply = '';
while ($line = fgets($handle, 515)) {
$reply .= $line;
if (substr($line, 3, 1) == ' ') {
break;
}
}
if (substr($reply, 0, 3) != 221) {
error_log('Error: QUIT not accepted from server!');
}
fclose($handle);
}
}
}
}
?>
Re: Mail/Smtp
Posted: Sun Sep 27, 2009 1:19 pm
by axxies
Thanks Daniel, but I tried that piece of code before I made the posting. It doesn't work for my hosting company that uses port 587 for SMTP. The bug/problem remains.
Daniel wrote:I posted a new fixed version somewhere here it is again:
Re: Mail/Smtp
Posted: Sun Sep 27, 2009 7:30 pm
by Daniel
then look up the other google port that is allowed to be used!
and enter that in the admin settings.
Re: Mail/Smtp
Posted: Tue Sep 29, 2009 9:15 am
by fido-x
I host my own services from home (DNS, Web and Mail), this requires that I use my ISP's mail server for outgoing mail. This means, I need to use SMTP to send out any emails from the OpenCart system.
The code in "system/library/mail.php" has had quite a few changes between 1.3.0 (where it worked) and 1.3.2 (where, in my case, it didn't). However, replacing the code in this file with what Daniel has posted in this thread solved all my mail problems. Therefore, I can confirm that the replacement code DOES WORK!
If you're still having problems, try using your ISP's mail server for outgoing mail (with the appropriate username and password). In other words, use the same information that you use for outgoing email that you use in your email client (eg. Thunderbird, Outlook, or whatever you use).
Re: Mail/Smtp
Posted: Tue Sep 29, 2009 1:27 pm
by axxies
Hi again,
I am not using Google mail for SMTP, I use my ISP. They have set port 587 for some reason. No other port works at them. I have set up OpenCart to use port 587 and it doesn't work.
Re: Mail/Smtp
Posted: Thu Oct 01, 2009 7:44 am
by fido-x
axxies wrote:Hi again,
I am not using Google mail for SMTP, I use my ISP. They have set port 587 for some reason. No other port works at them. I have set up OpenCart to use port 587 and it doesn't work.
Since your host is using a "non-standard" port for SMTP, probably means they require authentication. In this case, your username is your email address (eg. username@mailserver).
Re: Mail/Smtp
Posted: Thu Oct 01, 2009 11:33 am
by axxies
I am using this hosting company for several other sites and yes, authentication is mandatory for the other sites too. Yet, this does not work with Opencart.