Script PHP ok não envia email quando chamado via Ajax. Como faço para funcionar ?
Boa tarde !!!!
Tenho um script PHP que quando chamado diretamente via barra de endereços do navegador roda perfeitamente e envia um e-mail
Porém esse mesmo script quando chamado via Ajax ele não envia o email apesar de retornar do Ajax como Success.
Por favor, Quem poderia me ajudar ?
Muito Obrigado !!!!!!
arquivo enviaemail.php
<?php
function enviaEmail($pFromAddr, $pFromName, $pToAddr, $pToName, $pAssunto, $pMsgHtml = "<html>
<head>
<title>Teste de envio de eMail HTML</title>
</head>
<body>
<table width=\\"100%\\">
<tr>
<td>
<center><h1>Teste de envio de eMail HTML</h1></center>
<hr>
<P>Olá você!,<br><br>
Esse email é apenas para você saber que o envio de email HTML está funcionando como o esperado!<br><br>
Obrigado,<br>
Eu.</p>
</td>
</tr>
</table>
</body>
</html>", $pMsgTxt = "Esse texto aqui eh um exemplo de email texto. Caso voce esteja enviando um email em HTML, por favor, utilize um cliente de email capaz de exibir mensagens HTML.", $pRetornoSucesso = "Email enviado com sucesso. Obrigado!\\n"){
require('email_message.php');
$from_address=$pFromAddr;
$from_name=$pFromName;
$reply_name=$from_name;
$reply_address=$from_address;
$reply_address=$from_address;
$error_delivery_name=$from_name;
$error_delivery_address=$from_address;
$to_name=$pToName;
$to_address=$pToAddr;
$to_address=$pToAddr;
$subject=$pAssunto;
$email_message=new email_message_class;
$email_message->SetEncodedEmailHeader("To",$to_address,$to_name);
$email_message->SetEncodedEmailHeader("From",$from_address,$from_name);
$email_message->SetEncodedEmailHeader("Reply-To",$reply_address,$reply_name);
$email_message->SetHeader("Sender",$from_address);
if(defined("PHP_OS") && strcmp(substr(PHP_OS,0,3),"WIN"))
$email_message->SetHeader("Return-Path",$error_delivery_address);
$email_message->SetEncodedHeader("Subject",$subject);
$html_message=$pMsgHtml;
$email_message->CreateQuotedPrintableHTMLPart($html_message,"",$html_part);
$text_message=$pMsgTxt;
$email_message->CreateQuotedPrintableTextPart($email_message->WrapText($text_message),"",$text_part);
$alternative_parts=array(
$text_part,
$html_part
);
$email_message->AddAlternativeMultipart($alternative_parts);
$error=$email_message->Send();
if(strcmp($error,""))
return "Error: $error"; // \\n";
else
return $pRetornoSucesso;
}
$retorno = 'TESTE DEC';
$titulo = htmlentities('Dados do Visa Checkout do Formulário de Doação enviado em ' . date("d/m/Y H:i:s"), 0, "UTF-8");
$textoHtml = "<html>
<head>
<title>$titulo</title>
</head>
<body>
<table width=\\"100%\\">
<tr>
<th colspan=\\"2\\">
<center><h1>$titulo</h1></center>
<hr>
</th>
</tr>
<tr>
<td>
<strong>Dados do Visa Checkout:</strong>
</td>
<td>
$retorno
</td>
</tr>
</table>
</body>
</html>";
$r = enviaEmail('de@seu.email.com.br', 'Site', 'para@outro.email.com.br', 'Contato Em (dados Visa Checkout)', 'Dados de Pagamento do Cliente (Formulario de Doacao)', $textoHtml, "Esse eMail possui seu conteudo em HTML. Por favor, utilize um cliente de email capaz de exibir mensagens HTML.", "Formulario enviado com sucesso. Obrigado!\\n");
$aResult = array();
$aResult['result'] = $r;
echo json_encode($aResult);
?>
chamada Ajax
jQuery.ajax({
type: "POST",
async: true,
url: "enviaemail.php",
data: {functionname: "retornaDados", arguments: ["ijzy6jv7Gl/fnp2/bnrRtu4q/SjQDkx", "g", "h"]},
traditional: true,
success: function (obj) {
console.log('Ok');
},
error: function(xhr, error){
console.debug(xhr); console.debug(error);
}
});
Tenho um script PHP que quando chamado diretamente via barra de endereços do navegador roda perfeitamente e envia um e-mail
Porém esse mesmo script quando chamado via Ajax ele não envia o email apesar de retornar do Ajax como Success.
Por favor, Quem poderia me ajudar ?
Muito Obrigado !!!!!!
arquivo enviaemail.php
<?php
function enviaEmail($pFromAddr, $pFromName, $pToAddr, $pToName, $pAssunto, $pMsgHtml = "<html>
<head>
<title>Teste de envio de eMail HTML</title>
</head>
<body>
<table width=\\"100%\\">
<tr>
<td>
<center><h1>Teste de envio de eMail HTML</h1></center>
<hr>
<P>Olá você!,<br><br>
Esse email é apenas para você saber que o envio de email HTML está funcionando como o esperado!<br><br>
Obrigado,<br>
Eu.</p>
</td>
</tr>
</table>
</body>
</html>", $pMsgTxt = "Esse texto aqui eh um exemplo de email texto. Caso voce esteja enviando um email em HTML, por favor, utilize um cliente de email capaz de exibir mensagens HTML.", $pRetornoSucesso = "Email enviado com sucesso. Obrigado!\\n"){
require('email_message.php');
$from_address=$pFromAddr;
$from_name=$pFromName;
$reply_name=$from_name;
$reply_address=$from_address;
$reply_address=$from_address;
$error_delivery_name=$from_name;
$error_delivery_address=$from_address;
$to_name=$pToName;
$to_address=$pToAddr;
$to_address=$pToAddr;
$subject=$pAssunto;
$email_message=new email_message_class;
$email_message->SetEncodedEmailHeader("To",$to_address,$to_name);
$email_message->SetEncodedEmailHeader("From",$from_address,$from_name);
$email_message->SetEncodedEmailHeader("Reply-To",$reply_address,$reply_name);
$email_message->SetHeader("Sender",$from_address);
if(defined("PHP_OS") && strcmp(substr(PHP_OS,0,3),"WIN"))
$email_message->SetHeader("Return-Path",$error_delivery_address);
$email_message->SetEncodedHeader("Subject",$subject);
$html_message=$pMsgHtml;
$email_message->CreateQuotedPrintableHTMLPart($html_message,"",$html_part);
$text_message=$pMsgTxt;
$email_message->CreateQuotedPrintableTextPart($email_message->WrapText($text_message),"",$text_part);
$alternative_parts=array(
$text_part,
$html_part
);
$email_message->AddAlternativeMultipart($alternative_parts);
$error=$email_message->Send();
if(strcmp($error,""))
return "Error: $error"; // \\n";
else
return $pRetornoSucesso;
}
$retorno = 'TESTE DEC';
$titulo = htmlentities('Dados do Visa Checkout do Formulário de Doação enviado em ' . date("d/m/Y H:i:s"), 0, "UTF-8");
$textoHtml = "<html>
<head>
<title>$titulo</title>
</head>
<body>
<table width=\\"100%\\">
<tr>
<th colspan=\\"2\\">
<center><h1>$titulo</h1></center>
<hr>
</th>
</tr>
<tr>
<td>
<strong>Dados do Visa Checkout:</strong>
</td>
<td>
$retorno
</td>
</tr>
</table>
</body>
</html>";
$r = enviaEmail('de@seu.email.com.br', 'Site', 'para@outro.email.com.br', 'Contato Em (dados Visa Checkout)', 'Dados de Pagamento do Cliente (Formulario de Doacao)', $textoHtml, "Esse eMail possui seu conteudo em HTML. Por favor, utilize um cliente de email capaz de exibir mensagens HTML.", "Formulario enviado com sucesso. Obrigado!\\n");
$aResult = array();
$aResult['result'] = $r;
echo json_encode($aResult);
?>
chamada Ajax
jQuery.ajax({
type: "POST",
async: true,
url: "enviaemail.php",
data: {functionname: "retornaDados", arguments: ["ijzy6jv7Gl/fnp2/bnrRtu4q/SjQDkx", "g", "h"]},
traditional: true,
success: function (obj) {
console.log('Ok');
},
error: function(xhr, error){
console.debug(xhr); console.debug(error);
}
});
Guilherme Vasconcellos
Curtidas 0