Jump to content
Fórum Script Brasil
  • 0

Enviar Email Html Por PHP


Robson Gaeski

Question

Ola Senhores,

Estou fazendo um formulário de contato e gostaria que o email fosse em formato HTML

Por exemplo, preciso enviar um link e uma imagem

Segue meu código PHP

// RECEBE OS VALORES VINDO DO FORMULÁRIO E ATRIBUI AS VARIÁVEIS
$imagem = $_POST['imagem'];
$site = $_POST['site'];
$nome = $_POST['nome'];
$email = $_POST['email'];
$telefone = $_POST['telefone'];
$cidade = $_POST['cidade'];
$textodamensagem = $_POST['textodamensagem'];

//CABEÇALHO - ONFIGURAÇÕES SOBRE SEUS DADOS E SEU WEBSITE
$nome_do_site="Seu Site";
$email_para_onde_vai_a_mensagem = "meuemail@gmail.com";
$nome_de_quem_recebe_a_mensagem = "Rob";
$exibir_apos_enviar='enviado.html';

//MAIS - CONFIGURAÇOES DA MENSAGEM ORIGINAL
$cabecalho_da_mensagem_original="From: $name <$email>\n";
$assunto_da_mensagem_original="Contato no Site";

// FORMA COMO RECEBERÁ O E-MAIL (FORMULÁRIO)
$configuracao_da_mensagem_original="
                                '<html>
                                <body>
                                <font face=Verdana size=1>
                                
                                //gostaria de pegar o caminho de uma imagem aqui
                                <img src=' $imagem '><br>
                                
                                //um link passando o href por parametro
                                <a id="link" href=' $site ' target="_blank" >Clique aqui</a>
                                
                                <br>                                
                                <b>Contato On-Line</b><br>
                                <br>
                                <b>Nome</b>: ' $nome ' <br>
                                <b>E-mail</b>: ' $email ' <br>
                                <b>Fone</b>: ' $telefone ' <br>
                                <b>Mensagem</b>: ' $textodamensagem ' <br>
                                <br><br>
                                </font>
                                </body>
                                </html>'

";

O email esta enviado mas esta vindo o código HTML por email e não a mensagem certa

Esse é o email que recebo:

<html>

<body>

<font face=Verdana size=1>

<img src=caminho_para_img.jpg><br>

<br>

<b>Contato On-Line</b><br>

<br>

<b>Nome</b>: ' . robteste . ' <br>

<b>E-mail</b>: ' . programador@gmail.com . ' <br>

<b>Fone</b>: ' . rob . ' <br>

<b>Cidade</b>: ' . rob . ' <br>

<b>Mensagem</b>: ' .sdfsdf . ' <br>

<br><br>

</font>

</body>

</html>';

gostaria que viesse o resultado do html e não o codigo.

o que estou fazendo de Errado?

Grato a todos

Edited by Robson Gaeski
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Claro que este é somente um exemplo e você deverá ajustar ao que precisa.

/* Montando a mensagem a ser enviada no corpo do e-mail. */
$mensagemHTML = '
<font face="Verdana, Geneva, sans-serif", size="2">
 <table width="806" border="0" cellpadding="0">
   <tr>
     <td width="186">Contato On-Line</td>
     <td width="614"> </td>
   </tr>
   <tr>
     <td><b>• Nome:</b></td>
     <td>'.$nome.'</td>
   </tr>
   <tr>
     <td><b>• Telefone:</b></td>
     <td>'.$telefone.'</td>
   </tr>
   <tr>
     <td><b>• E-mail:</b></td>
     <td>'.$email.'</td>
   </tr>
   <tr>
     <td><b>• Mensagem:</b></td>
     <td>'.nl2br($textodamensagem).'</td>
   </tr>
 </table></font>';


/* Montando o cabeçalho da mensagem */
$headers = "MIME-Version: 1.1".$quebra_linha;
$headers .= "Content-type: text/html; charset=iso-8859-1".$quebra_linha;
// Perceba que a linha acima contém "text/html", sem essa linha, a mensagem não chegará formatada.
$headers .= "From: ".$Nome."<$email>".$quebra_linha;
$headers .= "Cc: ".$Form_Email_Comcopia.$quebra_linha;
$headers .= "Bcc: ".$Form_Email_Comcopiaoculta.$quebra_linha;
$headers .= "Reply-To: ".$email.$quebra_linha;
$headers .= "Return-Path: ".$email.$quebra_linha;
// Note que o e-mail do remetente será usado no campo Reply-To (Responder Para)

Att.

Henrique Flausino

Link to comment
Share on other sites

  • 0

Ola Enrique

usei como me falou mas o email que recebi foi esse:

<font face="Verdana, Geneva, sans-serif", size="2">

<table width="806" border="0" cellpadding="0">

<tr>

<td width="186">Contato On-Line</td>

<td width="614"> </td>

</tr>

<tr>

<td><b>• Nome:</b></td>

<td>a</td>

</tr>

<tr>

<td><b>• Telefone:</b></td>

<td>a</td>

</tr>

<tr>

<td><b>• E-mail:</b></td>

<td>robsong@gmail.com</td>

</tr>

<tr>

<td><b>• Mensagem:</b></td>

<td>a</td>

</tr>

</table></font>

Link to comment
Share on other sites

  • 0

Por não se tratar de um servidor de qualidade, não desmerecendo você ou a empresa, mas nem toda programação funciona igual em servidores diferentes.

Estou postando o código abaixo para você usar no seu servidor, não edite nada, apenas coloque e teste.

Link para o meu servidor para que você possa testar

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Contato</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
&lt;script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
&lt;script src="SpryAssets/SpryValidationTextarea.js" type="text/javascript"></script>
<link href="SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" />
<link href="SpryAssets/SpryValidationTextarea.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="latest-post" class="wide-post">
<h1 class="title">Contato</h1>
    <div class="entry">
      <form id="form1" name="form1" method="post" action="form.php">
        <table width="100%" border="0" class="links">
  <tr>
    <th width="17%" scope="col">* Nome:</th>
    <th width="83%" align="left"><span id="sprytextfield1">
      <input name="nome" type="text" id="nome" size="50" />
      <span class="textfieldRequiredMsg">Informe seu Nome.</span></span></th>
  </tr>
  <tr>
    <th scope="row">* E-mail:</th>
    <td><span id="sprytextfield2">
      <input name="Form_Email_Remetente" type="text" id="Form_Email_Remetente" size="50" />
      <span class="textfieldRequiredMsg">Informe seu e-mail.</span><span class="textfieldInvalidFormatMsg">Formato inválido.</span></span></td>
  </tr>
  <tr>
    <th scope="row">Telefone:</th>
    <td><input name="fone" type="text" id="fone" size="50" /></td>
  </tr>
  <tr>
    <th scope="row">CEP:</th>
    <td><input type="text" name="CEP" id="CEP" /></td>
  </tr>
  <tr>
    <th scope="row">Descrição do Contato:</th>
    <td><span id="sprytextarea1">
      <textarea name="Mensagem" id="Mensagem" cols="48" rows="7"></textarea>
      <br /><span class="textareaRequiredMsg">Favor deixar a descrição do contato.</span></span></td>
  </tr>
  <tr>
    <th scope="row"> </th>
    <td>
    <input type="submit" name="Enviar" id="Enviar" value="Enviar" />
    <input type="reset" name="Limpar" id="Limpar" value="Limpar" />
    <input name="Form_Email_Destinatario" type="hidden" id="Form_Email_Destinatario" value="henrique.flausino@gmail.com" style="visibility:hidden"/>
    <input name="Form_Email_Comcopia" type="hidden" id="Form_Email_Comcopia" style="visibility:hidden" value="robsong@gmail.com"/>
    <input name="Form_Email_Comcopiaoculta" type="hidden" id="Form_Email_Comcopiaoculta" value="" style="visibility:hidden"/>
    <input name="Assunto" type="hidden" id="Assunto" value="Form de Contato Online" style="visibility:hidden"/>
    <input name="Form_Email_Titulo" type="hidden" id="Form_Email_Titulo" value="Form de Contato Online" style="visibility:hidden"/>
    <input type="hidden" name="IP_do_Visitante" id="IP_do_Visitante" value="<?php echo "$_SERVER[REMOTE_ADDR]";?>" /></td>
  </tr>
</table>
      </form>
&lt;script type="text/javascript">
<!--
var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1", "none", {validateOn:["change"]});
var sprytextfield2 = new Spry.Widget.ValidationTextField("sprytextfield2", "email", {validateOn:["blur"]});
var sprytextarea1 = new Spry.Widget.ValidationTextarea("sprytextarea1", {validateOn:["blur"]});
//-->
</script>
</body>
</html>
<?php
/* Verifica qual é o sistema operacional do servidor para ajustar o cabeçalho de forma correta. Não alterar */
if(PHP_OS == "Linux") $quebra_linha = "\n"; //Se for Linux
elseif(PHP_OS == "WINNT") $quebra_linha = "\r\n"; // Se for Windows
else die("Este script não esta preparado para funcionar com o sistema operacional de seu servidor");

// Passando os dados obtidos pelo formulário para as variáveis abaixo
$IP        = $_POST['IP_do_Visitante'];
$Nome     = $_POST['nome'];
$Fone     = $_POST['fone'];
$CEP     = $_POST['CEP'];
$Form_Email_Remetente    = $_POST['Form_Email_Remetente'];
$Form_Email_Destinatario = $_POST['Form_Email_Destinatario'];
$Form_Email_Comcopia          = $_POST['Form_Email_Comcopia'];
$Form_Email_Comcopiaoculta    = $_POST['Form_Email_Comcopiaoculta'];
$Titulo            = $_POST['Form_Email_Titulo'];
$Assunto           = $_POST['Assunto'];
$Comentarios          = $_POST['Mensagem'];

/* Montando a mensagem a ser enviada no corpo do e-mail. */
$mensagemHTML = '
<font face="Verdana, Geneva, sans-serif", size="2">
 <table width="806" border="0" cellpadding="0">
   <tr>
     <td width="186"><b>• IP do Visitante:</b></td>
     <td width="614">'.$IP.'</td>
   </tr>
   <tr>
     <td><b>• Nome:</b></td>
     <td>'.$Nome.'</td>
   </tr>
   <tr>
     <td><b>• Telefone:</b></td>
     <td>'.$Fone.'</td>
   </tr>
   <tr>
     <td><b>• CEP:</b></td>
     <td>'.$CEP.'</td>
   </tr>
   <tr>
     <td><b>• Assunto:</b></td>
     <td>'.$Assunto .'</td>
   </tr>
   <tr>
     <td><b>• Mensagem:</b></td>
     <td>'.nl2br($Comentarios).'</td>
   </tr>
 </table>
</font>';


/* Montando o cabeçalho da mensagem */
$headers = "MIME-Version: 1.1".$quebra_linha;
$headers .= "Content-type: text/html; charset=iso-8859-1".$quebra_linha;
// Perceba que a linha acima contém "text/html", sem essa linha, a mensagem não chegará formatada.
$headers .= "From: ".$Nome."<$Form_Email_Remetente>".$quebra_linha;
$headers .= "Cc: ".$Form_Email_Comcopia.$quebra_linha;
$headers .= "Bcc: ".$Form_Email_Comcopiaoculta.$quebra_linha;
$headers .= "Reply-To: ".$Form_Email_Remetente.$quebra_linha;
$headers .= "Return-Path: ".$Form_Email_Remetente.$quebra_linha;
// Note que o e-mail do remetente será usado no campo Reply-To (Responder Para)

/* Enviando a mensagem */
//Verificando qual é o MTA que está instalado no servidor e efetuamos o ajuste colocando o paramentro -r caso seja Postfix

    mail($Form_Email_Destinatario, $Titulo, $mensagemHTML, $headers );

echo "<meta http-equiv='refresh' content='1; url=contato.php'>"

?>

Link to comment
Share on other sites

  • 0

Obrigado Henrique

Funcionou perfeitamente.

mas porque sera o meu script não funcionou o html??

não tem nada de mais

segue o script completo

<?php

$date = date("d/m/Y h:i");

// RECEBE OS VALORES VINDO DO FORMULÁRIO E ATRIBUI AS VARIÁVEIS

$nome = $_POST['nome'];

$email = $_POST['email'];

$telefone = $_POST['telefone'];

$cidade = $_POST['cidade'];

$textodamensagem = $_POST['textodamensagem'];

//CABEÇALHO - ONFIGURAÇÕES SOBRE SEUS DADOS E SEU WEBSITE

$nome_do_site="Seu Site";

$email_para_onde_vai_a_mensagem = "programadorsesmo3@gmail.com";

$nome_de_quem_recebe_a_mensagem = "Rob";

$exibir_apos_enviar='enviado.html';

//MAIS - CONFIGURAÇOES DA MENSAGEM ORIGINAL

$cabecalho_da_mensagem_original="From: $name <$email>\n";

$assunto_da_mensagem_original="Contato no Site";

// FORMA COMO RECEBERÁ O E-MAIL (FORMULÁRIO)

$configuracao_da_mensagem_original="

<html>

<body>

<font face=Verdana size=1>

<br>

<b>Contato On-Line</b><br>

<br>

<b>Nome</b>: ' $nome ' <br>

<b>E-mail</b>: ' $email ' <br>

<b>Fone</b>: ' $telefone ' <br>

<b>Mensagem</b>: ' $textodamensagem ' <br>

<br><br>

</font>

</body>

</html>";

$headers = "Content-type: text/html; charset=iso-8859-1rn";

//CONFIGURAÇÕES DA MENSAGEM DE RESPOSTA

// CASO $assunto_digitado_pelo_usuario="s" ESSA VARIAVEL RECEBERA AUTOMATICAMENTE A CONFIGURACAO

// "Re: $assunto"

$assunto_da_mensagem_de_resposta = "Confirmação";

$cabecalho_da_mensagem_de_resposta = "From: $nome_do_site < $email_para_onde_vai_a_mensagem>\n";

$configuracao_da_mensagem_de_resposta="Obrigado por entrar em contato!\nEstaremos respondendo em breve...\nAtenciosamente,\n$nome_do_site\n\nEnviado em: $date";

// ****** IMPORTANTE ********

// A PARTIR DE AGORA RECOMENDA-SE QUE NÃO ALTERE O SCRIPT PARA QUE O SISTEMA FINCIONE CORRETAMENTE

// ****** IMPORTANTE ********

//ESSA VARIAVEL DEFINE SE É O USUARIO QUEM DIGITA O ASSUNTO OU SE DEVE ASSUMIR O ASSUNTO DEFINIDO

//POR VOCÊ CASO O USUARIO DEFINA O ASSUNTO PONHA "s" NO LUGAR DE "n" E CRIE O CAMPO DE NOME

//'assunto' NO FORMULARIO DE ENVIO

$assunto_digitado_pelo_usuario="s";

//ENVIO DA MENSAGEM ORIGINAL

$headers = "$cabecalho_da_mensagem_original";

if($assunto_digitado_pelo_usuario=="n"){

$assunto = "$assunto_da_mensagem_original";

}

$seuemail = "$email_para_onde_vai_a_mensagem";

$mensagem = "$configuracao_da_mensagem_original";

mail($seuemail,$assunto,$mensagem,$headers);

//ENVIO DE MENSAGEM DE RESPOSTA AUTOMATICA

$headers = "$cabecalho_da_mensagem_de_resposta";

if($assunto_digitado_pelo_usuario=="n"){

$assunto = "$assunto_da_mensagem_de_resposta";

}else{

$assunto = "Re: $assunto";

}

$mensagem = "$configuracao_da_mensagem_de_resposta";

mail($email,$assunto,$mensagem,$headers);

echo "<script>window.location='$exibir_apos_enviar'</script>";

?>

Link to comment
Share on other sites

  • 0
Obrigado Henrique

Funcionou perfeitamente.

mas porque sera o meu script não funcionou o html??

não tem nada de mais

segue o script completo

<?php

$date = date("d/m/Y h:i");

// RECEBE OS VALORES VINDO DO FORMULÁRIO E ATRIBUI AS VARIÁVEIS

$nome = $_POST['nome'];

$email = $_POST['email'];

$telefone = $_POST['telefone'];

$cidade = $_POST['cidade'];

$textodamensagem = $_POST['textodamensagem'];

//CABEÇALHO - ONFIGURAÇÕES SOBRE SEUS DADOS E SEU WEBSITE

$nome_do_site="Seu Site";

$email_para_onde_vai_a_mensagem = "programadorsesmo3@gmail.com";

$nome_de_quem_recebe_a_mensagem = "Rob";

$exibir_apos_enviar='enviado.html';

//MAIS - CONFIGURAÇOES DA MENSAGEM ORIGINAL

$cabecalho_da_mensagem_original="From: $name <$email>\n";

$assunto_da_mensagem_original="Contato no Site";

// FORMA COMO RECEBERÁ O E-MAIL (FORMULÁRIO)

$configuracao_da_mensagem_original="

<html>

<body>

<font face=Verdana size=1>

<br>

<b>Contato On-Line</b><br>

<br>

<b>Nome</b>: ' $nome ' <br>

<b>E-mail</b>: ' $email ' <br>

<b>Fone</b>: ' $telefone ' <br>

<b>Mensagem</b>: ' $textodamensagem ' <br>

<br><br>

</font>

</body>

</html>";

$headers = "Content-type: text/html; charset=iso-8859-1rn";

//CONFIGURAÇÕES DA MENSAGEM DE RESPOSTA

// CASO $assunto_digitado_pelo_usuario="s" ESSA VARIAVEL RECEBERA AUTOMATICAMENTE A CONFIGURACAO

// "Re: $assunto"

$assunto_da_mensagem_de_resposta = "Confirmação";

$cabecalho_da_mensagem_de_resposta = "From: $nome_do_site < $email_para_onde_vai_a_mensagem>\n";

$configuracao_da_mensagem_de_resposta="Obrigado por entrar em contato!\nEstaremos respondendo em breve...\nAtenciosamente,\n$nome_do_site\n\nEnviado em: $date";

// ****** IMPORTANTE ********

// A PARTIR DE AGORA RECOMENDA-SE QUE NÃO ALTERE O SCRIPT PARA QUE O SISTEMA FINCIONE CORRETAMENTE

// ****** IMPORTANTE ********

//ESSA VARIAVEL DEFINE SE É O USUARIO QUEM DIGITA O ASSUNTO OU SE DEVE ASSUMIR O ASSUNTO DEFINIDO

//POR VOCÊ CASO O USUARIO DEFINA O ASSUNTO PONHA "s" NO LUGAR DE "n" E CRIE O CAMPO DE NOME

//'assunto' NO FORMULARIO DE ENVIO

$assunto_digitado_pelo_usuario="s";

//ENVIO DA MENSAGEM ORIGINAL

$headers = "$cabecalho_da_mensagem_original";

if($assunto_digitado_pelo_usuario=="n"){

$assunto = "$assunto_da_mensagem_original";

}

$seuemail = "$email_para_onde_vai_a_mensagem";

$mensagem = "$configuracao_da_mensagem_original";

mail($seuemail,$assunto,$mensagem,$headers);

//ENVIO DE MENSAGEM DE RESPOSTA AUTOMATICA

$headers = "$cabecalho_da_mensagem_de_resposta";

if($assunto_digitado_pelo_usuario=="n"){

$assunto = "$assunto_da_mensagem_de_resposta";

}else{

$assunto = "Re: $assunto";

}

$mensagem = "$configuracao_da_mensagem_de_resposta";

mail($email,$assunto,$mensagem,$headers);

echo "&lt;script>window.location='$exibir_apos_enviar'</script>";

?>

Vamos por parte, $headers .= "Content-type: text/html; charset=iso-8859-1" é o correto e no seu código está $headers = "Content-type: text/html; charset=iso-8859-1rn";

Sua página (form) deve conter o mesmo formato "iso-8859-1"

Não olhei todo o seu código mas o que mais me chamou a atenção foi isso.

Att.

Henrique Flausino

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...