Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Criei um formulário que quando enviado, é inserido no banco de dados e enviado um e-mail para o administrador, está funcionando perfeitamente se não fosse por um detalhe: o e-mail é enviado, porém quando se vai visualizar o e-mail, os caracteres especiais não aparecem, está desconfigurado. No banco de dados está tudo normal com os caracteres especiais.
Segue abaixo a página que insere no banco de dados e envia pro e-mail:
<?php require_once('../Connections/conectar.php'); ?>
<?php
$i1 = $_POST['i1'];
$i2 = $_POST['i2'];
$i3 = $_POST['i3'];
$i4 = $_POST['i4'];
$i5 = $_POST['i5'];
$hora = $_POST['hora'];
$data = $_POST['data'];
$mensagem = "<b>Nome:</b> \t$i1<br />";
$mensagem .= "<b>Cidade:</b> \t$i2<br />";
$mensagem .= "<b>Login:</b> \t$i3<br />";
$mensagem .= "<b>Senha:</b> \t$i4<br />";
$mensagem .= "<b>E-mail:</b> \t$i5<br />";
//$mensagem = "$msg";
$remetente = "$i5";
$destinatario = "email@email.com";
$assunto = "Cadastro do Site";
$headers = "From: ".$remetente."\nContent-type: text/html";
if(!mail($destinatario,$assunto,$mensagem,$headers)){
header('Location: erro.php');
} else {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO cadastros (i1, i2, i3, i4, i5, data, hora) VALUES (%s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['i1'], "text"),
GetSQLValueString($_POST['i2'], "text"),
GetSQLValueString($_POST['i3'], "text"),
GetSQLValueString($_POST['i4'], "text"),
GetSQLValueString($_POST['i5'], "text"),
GetSQLValueString($_POST['data'], "text"),
GetSQLValueString($_POST['hora'], "text"));
mysql_select_db($database_conectar, $conectar);
$Result1 = mysql_query($insertSQL, $conectar) or die(mysql_error());
$insertGoTo = "confirma_cadastro.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
mysql_select_db($database_conectar, $conectar);
$query_Recordset1 = "SELECT * FROM cadastros";
$Recordset1 = mysql_query($query_Recordset1, $conectar) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
mysql_free_result($Recordset1);
header('Location: confirma_cadastro.php');
}
?>
Fazendo mais pesquisas enquanto esperava respostas, encontrei algo que resolvia meu problema parcialmente...
Depois das variaveis $mensagem, adicionei o seguinte:
$msg = htmlentities($mensagem, ENT_QUOTES);
//$mensagem = "$msg";
$remetente = "$i5";
$destinatario = "email@email.com";
$assunto = "Cadastro do Site";
$headers = "From: ".$remetente."\nContent-type: text/html";
if(!mail($destinatario,$assunto,$msg,$headers))
Agora está aparecendo os acentos e tudo, porém ele não está interpretando os códigos html como <br> ou <b>, poderiam me dizer como resolver agora?
Carregando comentários...