Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

acao

[Resolvido] enviar email (msg em html)

Mensagens Recomendadas

acao

bom dia

consigo enviar emails na esotérica mas o corpo do texto fica com as tags html

penso que o erro e no envio dos headers.

se fizer assim envia mas aparecem as tag HTML:

$headers = array ('From' => $mailUserName,
	'To' => $mailDestino1,
	'Subject' => utf8_decode($subject));

se colocar assim não envia:

$headers = "MIME-Version: 1.0\r\n";
	$headers.= "Content-type: text/html;charset=utf-8\r\n";
	$headers.= "Form:".$mailUserName."\r\n";
	$headers.= "To:".$mailDestino1."\r\n";
	$headers.= "Subject:".utf8_decode($subject);

já tentei sem o \r , tenho a msg com o utf8_decode($msg) alguma ajuda agradeço

cumps acao

Editado por acao

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

o teu problema não está no headers, mas sim em como estás a processar os dados do corpo da mensagem. isto porque o segundo código está correcto


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
acao

o teu problema não está no headers, mas sim em como estás a processar os dados do corpo da mensagem. isto porque o segundo código está correcto

obrigado pela resposta

penso que o corpo da msg está corecta porque se utilizar a famosa class phmailer, consigo enviar mesmo na esotérica, só que o homail considera span, e não é por enviar muitos email, porque estou só agora a utilizar os email criados na esotérica.

ao tentar incluir a versão que dizes corecta, dá este erro :$headers must be an array


// Dados de autenticação SMTP
    $smtpinfo['host'] = 'localhost';
    $smtpinfo['port'] = '25';
    $smtpinfo['auth'] = true;
    $smtpinfo['html'] = true;
    $smtpinfo['username'] = $mailUserName; /* Altere este campo para o email do seu domínio */
    $smtpinfo['password'] = $EmailPassword; /* Altere este campo para a password do email */
    // Inclusão de ficheiro PEAR. Certifique-se que o PEAR está activado no seu alojamento
    require_once "Mail.php";
    // Corpo da mensagem
    $body = "Nome: ". utf8_decode($subject);
    $body.= "\n";
    $body.= nl2br(utf8_decode($Action));
    $headers = "MIME-Version: 1.0\r\n";
    $headers.= "Content-type: text/html;charset=utf-8\r\n";
    $headers.= "Form:".$mailUserName."\r\n";
    $headers.= "To:".$mailDestino1."\r\n";
    $headers.= "Subject:".utf8_decode($subject);

    $mail_object = Mail::factory('smtp', $smtpinfo);
    $mail = $mail_object->send($mailDestino1, $headers, $body);
    if ( PEAR::isError($mail) ) {
	    $this->enviarEmailSucessoTrue = 0;
	    $this->erro = $mail->getMessage();
	    echo $mail->getMessage();
	    exit();
    } else {
	    $this->enviarEmailSucessoTrue = 1;
	    //echo "Enviado com sucesso";
    }

	}

Editado por acao

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

e depois de todo esse código continuas a não apresentar a contrução do conteúdo da variável $body, variável essa que tem os dados que dizes não aparecerem como pretendes:

consigo enviar emails na esotérica mas o corpo do texto fica com as tags html


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
acao

e depois de todo esse código continuas a não apresentar a contrução do conteúdo da variável $body, variável essa que tem os dados que dizes não aparecerem como pretendes:

enxerto do cod do texto
$MsgEmail = ('</br></br></br><div style="background-color:#F0F0F0;position:absolute;margin-left:10px;width:600px;font-size:16pt;">
															 <h5 style="position:absolute;width:100%;font-size:14pt;">Novos anúncios no l</h5></br></br></div>
															 <table style="position:absolute;"><tr><td style="background-color:#F0F0F0;position:absolute;		
																 width:120px;z-index:1;font-size:14pt;"><h5 ></h5></td>')

Editado por acao

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

agora que alteraste o que tens acima, diz:

é:

$body = "Nome: ". utf8_decode($subject);
$body.= "\n";
$body.= nl2br(utf8_decode($Action));

ou ?

$MsgEmail = '
</br></br></br><div style="background-color:#F0F0F0;position:absolute;margin-left:10px;width:600px;font-size:16pt;">
<h5 style="position:absolute;width:100%;font-size:14pt;">Novos anúncios no l</h5></br></br></div>
<table style="position:absolute;"><tr><td style="background-color:#F0F0F0;position:absolute;width:120px;z-index:1;font-size:14pt;"><h5 ></h5></td>';


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
acao

agora que alteraste o que tens acima, diz:

é:

$body = "Nome: ". utf8_decode($subject);
$body.= "\n";
$body.= nl2br(utf8_decode($Action));

ou ?

$MsgEmail = '
</br></br></br><div style="background-color:#F0F0F0;position:absolute;margin-left:10px;width:600px;font-size:16pt;">
<h5 style="position:absolute;width:100%;font-size:14pt;">Novos anúncios no l</h5></br></br></div>
<table style="position:absolute;"><tr><td style="background-color:#F0F0F0;position:absolute;width:120px;z-index:1;font-size:14pt;"><h5 ></h5></td>';

não percebi a questão!

a variável $action corresponde à variável $msgEmail

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

não percebi a questão!

a variável $action corresponde à variável $msgEmail

não percebes a questão e quem está a ler o tópico não percebe o que estas a apresentar, isto porque estás a dar informação contraditória !!!

primeiro dizes que a informção é X e depois dizes que é Y ($Action/$MsgEmail), e presupoes qque as pessoas adivinhem que é a mesma coisa ...

segundo, dizes no header do email que o conteúdo deste é utf-8:

$headers.= "Content-type: text/html;charset=utf-8\r\n";

no entanto, depois descodificas o conteúdo do email:

$body.= nl2br(utf8_decode($Action));

por outras palavras, se dizes ao cliente de email que tem de ler em português, então tens de dar um texto em português e não numa outra linguagem qualquer


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
acao

não percebes a questão e quem está a ler o tópico não percebe o que estas a apresentar, isto porque estás a dar informação contraditória !!!

primeiro dizes que a informção é X e depois dizes que é Y ($Action/$MsgEmail), e presupoes qque as pessoas adivinhem que é a mesma coisa ...

segundo, dizes no header do email que o conteúdo deste é utf-8:

$headers.= "Content-type: text/html;charset=utf-8\r\n";

no entanto, depois descodificas o conteúdo do email:

$body.= nl2br(utf8_decode($Action));

por outras palavras, se dizes ao cliente de email que tem de ler em português, então tens de dar um texto em português e não numa outra linguagem qualquer

retirei todos os utf8_decode e o erro continua.

cumps

acao

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

quando disses "erro continua" suponho que seja a recepção do email com o HTML "por extenso" em vez de HTML normal, certo?


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
acao

quando disses "erro continua" suponho que seja a recepção do email com o HTML "por extenso" em vez de HTML normal, certo?

não, não envia, e aquele echo (echo $mail->getMessage();) retorna este (erro :$headers must be an array)

a esotérica fornece isto no seu site, e seguindo o ficheiro e utilizando o array no header envia mas amostra as tags html

https://www.esoterica.pt/envio-de-email-por-php/

cumps

acao

Editado por acao

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
acao

e qual é o código que tens agora ?

// Dados de autenticação SMTP
       $smtpinfo['host'] = 'localhost';
       $smtpinfo['port'] = '25';
       $smtpinfo['auth'] = true;
       $smtpinfo['html'] = true;
       $smtpinfo['username'] = $mailUserName; /* Altere este campo para o email do seu domínio */
       $smtpinfo['password'] = $EmailPassword; /* Altere este campo para a password do email */
       // Dados recebidos do formulário
       /*$nome = utf8_decode($subject);
       $email = $mailDestino1;
       $mensagem = utf8_decode($Action);*/
       // Inclusão de ficheiro PEAR. Certifique-se que o PEAR está activado no seu alojamento
       require_once "Mail.php";
       // Corpo da mensagem
       $body = "Nome: ". $subject;
       $body.= "\n";
       $body.= nl2br($Action);
       /*$headers = array ('From' => $mailUserName,
       'To' => $mailDestino1,
       'Subject' => utf8_decode($subject));*/
       $headers = "MIME-Version: 1.0\r\n";
       $headers.= "Content-type: text/html;charset=utf-8\r\n";
       $headers.= "Form:".$mailUserName."\r\n";
       $headers.= "To:".$mailDestino1."\r\n";
       $headers.= "Subject:".$subject;

       $mail_object = Mail::factory('smtp', $smtpinfo);
       $mail = $mail_object->send($mailDestino1, $headers, $body);
       if ( PEAR::isError($mail) ) {
           $this->enviarEmailSucessoTrue = 0;
           $this->erro = $mail->getMessage();
           echo $mail->getMessage();
           exit();
       } else {
           $this->enviarEmailSucessoTrue = 1;
           //echo "Enviado com sucesso";
       }
   }

erro :$headers must be an array)

Editado por acao

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

como o link que apresentaste, a variável headers deverá ser um array.

nota que não estás a usar a função mail do PHP !!!

$headers = [];
$headers["MIME-Version"] = "1.0"";
$headers["Content-type"] = "text/html;charset=utf-8";
$headers["Form"]         = $mailUserName;
$headers["To"]           = $mailDestino1;
$headers["Subject"]      = $subject;


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
acao

como o link que apresentaste, a variável headers deverá ser um array.

nota que não estás a usar a função mail do PHP !!!

$headers = [];
$headers["MIME-Version"] = "1.0"";
$headers["Content-type"] = "text/html;charset=utf-8";
$headers["Form"]		 = $mailUserName;
$headers["To"]		   = $mailDestino1;
$headers["Subject"]	  = $subject;

pois eu sei que é um ficheiro feito por eles, já tentei também colocar em array, mas fiz com as keys automáticas, vou tentar a tua sugestão depois digo alguma coisa.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
acao

boa tarde, @HappyHippyHippo obrigado pela tua dica,

ficou assim:

// Dados de autenticação SMTP
	$smtpinfo['host'] = 'localhost';
	$smtpinfo['port'] = '25';
	$smtpinfo['auth'] = true;
	$smtpinfo['html'] = true;
	$smtpinfo['username'] = $mailUserName; /* Altere este campo para o email do seu domínio */
	$smtpinfo['password'] = $EmailPassword; /* Altere este campo para a password do email */
	// Dados recebidos do formulário
	/*$nome = utf8_decode($subject);
	$email = $mailDestino1;
	$mensagem = utf8_decode($Action);*/
	// Inclusão de ficheiro PEAR. Certifique-se que o PEAR está activado no seu alojamento
	require_once "Mail.php";
	// Corpo da mensagem
	$body = "Nome: ".$subject;
	$body.= "\n";
	$body.= nl2br($mensagem);
	$headers = array ('MIME-Version' => "1.0",
	'Content-type' => "text/html;charset=utf-8",
	'From' => $mailUserName,
	'To' => $mailDestino1,
	'Subject' => $subject);
	$mail_object = Mail::factory('smtp', $smtpinfo);
	$mail = $mail_object->send($mailDestino1, $headers, $body);
	if ( PEAR::isError($mail) ) {
		$this->enviarEmailSucessoTrue = 0;
		$this->erro = $mail->getMessage();
	} else {
		$this->enviarEmailSucessoTrue = 1;
		//echo "Enviado com sucesso";
	}

resolvido, obrigado

cumpts

acao

Editado por acao

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.