Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

Por favor, poste aqui todas as dúvidas que você está tendo sobre a instalação, atualização ou configuração do OpenCart v1.x
#46021
Não é a melhor solução... mas alterei direto o controller dessa classe... cuidado só com a quebra de linha do cabeçalho, está comentado no código

Localize no arquivo catalog / controller / information / contact.php as linhas:
Código: Selecionar todos
    	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->hostname = $this->config->get('config_smtp_host');
					$mail->username = $this->config->get('config_smtp_username');
					$mail->password = $this->config->get('config_smtp_password');
					$mail->port = $this->config->get('config_smtp_port');
					$mail->timeout = $this->config->get('config_smtp_timeout');				
					$mail->setTo($this->config->get('config_email'));
					$mail->setFrom($this->request->post['email']);
					$mail->setSender($this->request->post['name']);
					$mail->setSubject(html_entity_decode(sprintf($this->language->get('email_subject'), $this->request->post['name']), ENT_QUOTES, 'UTF-8'));
					$mail->setText(strip_tags(html_entity_decode($this->request->post['enquiry'], ENT_QUOTES, 'UTF-8')));
					$mail->send();
	  		$this->redirect($this->url->link('information/contact/success'));
    	}
e substitua por (veja os comentários):
Código: Selecionar todos
    	if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {	
					// ATENÇÃO: verifique se o mail configurado na loja é o do domínio, muitos servidores (Locaweb) só permitem envio de mail com origem no próprio domínio
					$emailsender=$this->config->get('config_email');
					$assunto = "Contato via site";
					$mensagemHTML = strip_tags(html_entity_decode($this->request->post['enquiry'], ENT_QUOTES, 'UTF-8'));
					 // ATENÇÃO: se LINUX trocar para "\n"
					$quebra_linha = "\r\n";
					$headers = "MIME-Version: 1.1".$quebra_linha;
					$headers .= "Content-type: text/html; charset=iso-8859-1".$quebra_linha;
					$headers .= "From: ".$this->config->get('config_email').$quebra_linha;
					$headers .= "Return-Path: " .$this->config->get('config_email'). $quebra_linha;
					$headers .= "Reply-To: ".$this->request->post['email'].$quebra_linha;
					 
					mail($this->config->get('config_email'), $assunto, $mensagemHTML, $headers, "-r". $emailsender);

	  		$this->redirect($this->url->link('information/contact/success'));
    	}
Fonte: adaptação das instruções http://wiki.locaweb.com.br/pt-br/PHP_Ma ... iva_do_PHP.
#46983
tmalmeida, aqui para mim resolveu o problema! Muito obrigado!

O problema era justamente esse, o provedor de email não aceitava o campo MAIL FROM de outro domínio, e como o formulário de contato envia o email usando como MAIL FROM o email do cliente, dava este erro.

Muito obrigado!
#77254
Olá amigos, testei praticamente tudo que foi dito aqui no fórum e nenhum sucesso no envio do formulário de contato do Opencart 1.5 na hospedagem da LOCAWEB, resolvi então, realizar uma mudança simples no código resumindo tudo que vi e pra minha surpresa funcionou!

Se em 2018 eu estava com esse problema, acredito que possa ser útil pra alguém também.

SEGUE A ALTERAÇÃO:

Localize no arquivo catalog / controller / information / contact.php as linhas:
Código: Selecionar todos
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->hostname = $this->config->get('config_smtp_host');
					$mail->username = $this->config->get('config_smtp_username');
					$mail->password = $this->config->get('config_smtp_password');
					$mail->port = $this->config->get('config_smtp_port');
					$mail->timeout = $this->config->get('config_smtp_timeout');				
					$mail->setTo($this->config->get('config_email'));
					$mail->setFrom($this->request->post['email']);
					$mail->setSender($this->request->post['name']);
					$mail->setSubject(html_entity_decode(sprintf($this->language->get('email_subject'), $this->request->post['name']), ENT_QUOTES, 'UTF-8'));
					$mail->setText(strip_tags(html_entity_decode($this->request->post['enquiry'], ENT_QUOTES, 'UTF-8')));
					$mail->send();
	  		$this->redirect($this->url->link('information/contact/success'));
    	}
E substitua por essas:
Código: Selecionar todos
if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) {
					$mailer = new Mail();
					$mailer->protocol = $this->config->get('config_mail_protocol');
					$mailer->parameter = $this->config->get('config_mail_parameter');
					$mailer->hostname = $this->config->get('config_smtp_host');
					$mailer->Username = 'Email do Seu Domínio';
                                        $mailer->Password = 'Sua Senha';
					$mailer->port = $this->config->get('config_smtp_port');
					$mailer->timeout = $this->config->get('config_smtp_timeout');				
					$mailer->setTo($this->config->get('config_email'));
					$mailer->setFrom($this->request->post['email']);
					$mailer->setSender($this->request->post['name']);
					$mailer->setSubject(html_entity_decode(sprintf($this->language->get('email_subject'), $this->request->post['name']), ENT_QUOTES, 'UTF-8'));
					$mailer->setText(strip_tags(html_entity_decode($this->request->post['enquiry'], ENT_QUOTES, 'UTF-8')));
					$mailer->send();
	  		$this->redirect($this->url->link('information/contact/success'));
    	}
Configuração na Opencart:

Protocolo de E-mail: SMTP
Parâmetros do Protocolo:
Servidor SMTP: mail.seudominio.com.br
Usuário SMTP: email@seudominio.com.br
Senha SMTP: suasenha
Porta SMTP: 587
Tempo de Conexão SMTP: 5

Você pode entrar em contato com o desenvolve[…]

E-mail não funciona

Boa tarde pessoal, tudo bem com vocês? Esto[…]

Aplicativo da loja.

Olá; Existe alguns sistemas prontos veja n[…]

Integração de login

Obrigado pela idéia, acredito que consigo f[…]