Насколько я могу судить, настройки почты настроены правильно, но я не получаю никаких писем, а не через контактную форму, а также для новых клиентов или любых размещенных заказов.
Вот мои текущие настройки:
Я пробовал:
Переходя к SMTP, я получаю сообщение об ошибке, и мой хост (IXWebHosting) говорит, что мне нужно отключить авторизацию в приложении, и я не вижу возможности для этого
Добавление -f и -F перед адресом электронной почты, как предлагается здесь
Добавление разных писем в поле «также отправить» в нижней части страницы «Почта»
Ручное определение заголовка «From» в коде, как предлагается здесь.
Tried @ gmail.com, @ googlemail.com и @ arabel.co.uk
И, к сожалению, я все еще не получаю никаких писем от OpenCart. Я связался с моим хостом и запускал тестовые скрипты – нет проблем с почтовой функцией или настройкой на сервере, и я только что загрузил последнюю версию mail.php из OpenCart (хотя это шесть месяцев и тот, который я использовал)
благодаря
ОБНОВИТЬ:
Похоже, что base64_encode не работает, потому что этот код:
echo $header = 'From: ' . '=?UTF-8?B?' . base64_encode($this->sender) . '?=' . '<' . $this->from . '>' . $this->newline; die();
Вывод:
From: =? UTF-8? B? Tmljaw ==? =
Не совсем уверен, почему кодировка base 64 должна быть честной. Откройте system/library/mail.php
и измените эту строку
echo $header .= 'From: ' . '=?UTF-8?B?' . base64_encode($this->sender) . '?=' . '<' . $this->from . '>' . $this->newline;
в
$header .= 'From: ' . $this->sender . ' <' . $this->from . '>' . $this->newline;
У меня было действительно большое расстройство с этим.
Проблема на самом деле с вашим сервером … Если вы используете почтовый вариант, вам нужно настроить почтовый сервер на своем локальном хосте. Но вопрос в том, что ваш интернет-провайдер поддерживает 25 портов для smtp. Если нет, то у вас проблемы.
Второй вариант – использовать gmail smtp или hotmail smtp. Я пробовал и терпел неудачу. Я не знаю, почему gmail не работает для меня, но я googled весь интернет, и выяснил, что у людей случайным образом есть проблемы с gmail.
Я искал и пробовал последнее средство .. smtp от моего isp. Я использовал SMTP моего провайдера и установил опцию на SMTP, узнал, что работает.
Я позвонил своему интернет-провайдеру, и они не знали, почему gmail не работает, но они сказали мне, что они закрыли 25 портов, чтобы спамеры не могли отправлять почту с вашим именем пользователя.
TL, DR: Попробуйте свой собственный isp smtp, если вы работаете на localhost, если не попросите своего хостинг-провайдера исправить что-то для вас 🙂
PS: Вы не можете отключить авторизацию. У превентивных версий opencart не было разрешения, что смешно, почему они не добавили опции для выбора с авторизацией или без нее.
Если вы знаете кодирование, вы можете редактировать класс почты в opencart, если это не так, ваше единственное решение – использовать ваш SMTP-провайдер или перейти на хостинг, на котором установлен его почтовый сервер с авторизацией smtp (которую нетрудно настроить даже для вашего текущего хостинг).
Попробуйте добавить несколько адресов электронной почты в меню настроек вашего сайта. (администрирование сайта).
Это сработало для нас, в OpenCart версии 1.5.5.3.
Я пробовал все возможные исправления, бит не работал для меня (я размещен на Site5, на Webfaction он работал). Я закончил переписывать функцию send () в файле system / library / mail.php, используя SwiftMailer. Я установил каталог system / library / swiftmailer. Мой код не является полным, потому что он предполагает, что аутентификация всегда необходима, но это должно быть легко исправить.
public function send() { require_once(DIR_SYSTEM . 'library/swiftmailer/swift_required.php'); 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; } $message = Swift_Message::newInstance() ->setSubject($this->subject) ->setFrom(array($this->from => $this->sender)) ->setTo(array($to)) ->setBody($this->text); if($this->html){ $message->addPart($this->html, 'text/html'); } foreach ($this->attachments as $attachment) { if (file_exists($attachment)) { $message->attach(Swift_Attachment::fromPath($attachment)); } } $transport = Swift_SmtpTransport::newInstance('localhost', 25) ->setUsername($this->username) ->setPassword($this->password); $mailer = Swift_Mailer::newInstance($transport); $mailer->send($message); }
Решение для меня состояло в том, что сообщения электронной почты не могли быть отправлены моим сервером, когда у них был домен в «от», который был не таким же, как у хоста.
Это было ясно, потому что, когда я заполнил test@mydomain.com
в контактной форме, он работает, а также регулярно поступают электронные письма.
Чтобы заставить почту отправляться с моего собственного хоста вместо заполненного адреса электронной почты, я редактировал контроллер контакта.
Не продолжайте это, если вы не знаете, как редактировать исходный код, я оставляю несколько простых шагов. Если вы не знаете этих шагов, не спрашивайте, а попросите профессионала посмотреть это. (Только для вашей собственной защиты)
Файл: catalog/controller/information/contact.php
Индекс функции, для меня в строке 21:
ОРИГИНАЛ:
$mail->setFrom($this->request->post['email']);
NEW:
$mail->setFrom($this->config->get('config_email')); $mail->setReplyTo($this->request->post['email']);
Это решило это для меня.