31st mai 2009
Mostrando o potencial da JS Calls PHP #4 – enviando e-mail
Estava fazendo para um freela um envio de e-mail num formulário, com backend PHP, e resolvi usar a JS Calls PHP. Demorou mais tempo do que se fizesse um send.php comum, mas serviu para testar a biblioteca e descobrir uma incompatibilidade em alguns momentos com a Prototype – imcompatibilidade essa já corrigida.
Então, vou mostrar um exemplo de como fazer um formulário onde o usuário digita o e-mail dele, um e-mail de destino e uma mensagem, e a JS Calls PHP faz o envio por e-mail dessa mensagem.
Veja aqui uma página de exemplo!
Criei uma classe chamada MailContato e nela um método, simpleSend(), que recebe três parámetros: e-mail de quem envie, e-mail de destino e a mensagem
<?php
class MailContato {
function __construct() {}
function simpleSend($sender, $receiver, $message) {
$header = “Content-type: text/html; charset=UTF-8\r\n”;
ini_set(’sendmail_from’, $sender);
mail($receiver, “Contato”, $message, $header) or die(“-1″);
return true;}
}
?>
No config.php da JS Calls PHP expus a classe sob o nome mailContato e, com isso, posso acessar o método simpleSend passandoos três parâmetros, conforme pode ser visto no html abaixo
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />
<title>Untitled Document</title>
<script type=”text/javascript” src=”../engine.js”></script>
<script type=”text/javascript” src=”../interface/mailContato.js”></script>
<script type=”application/javascript”>
window.onload = function() {
document.getElementById(“submit”).onclick = function() {
var sender = document.getElementById(“sender”).value;
var receiver = document.getElementById(“receiver”).value;
var msg = document.getElementById(“message”).value;
mailContato.simpleSend(sender, receiver, msg, function(status) {if(status==true)
alert(“Mensagem enviada com sucesso”);
})}
}
</script>
</head><body>
<h1>JS Calls PHP</h1>
<h2>Exemplo de uso – mensagem por e-mail</h2><form action=”#” id=”commentform” method=”POST” onsubmit=”return false;”>
<label for=”sender”>seu e-mail:</label><input type=”text” id=”sender” /><br />
<label for=”receiver”>e-mail destino:</label><input type=”text” id=”receiver” /><br />
sua mensagem:<br />
<textarea id=”message”></textarea>
<input type=”submit” id=”submit” value=”enviar” />
</form>
</body>
</html>
No retorno da função, exibo a mensagem de sucesso caso a funcão retorne true. Simples!
Faça download da JS Calls PHP aqui

Isso me deu uma idéia pra um trabalho que estou fazendo agora, se funcionar eu te mostro…
Muito boa a classe, eu fiz um exemplo usando jquery+php+ER…
Certo que ele pode ser bastante melhorada mais funciona redondinho!
@Thiago mostra ae a idéia, se rolar!
@Mayron bota o link ae
http://cachina.wordpress.com/2009/06/01/envio-de-e-mail-com-jquery-e-php/
Um exemplo funcional: http://mayroncachina.net/contato.php
Ah, agora vi lá!
Basicamente o que tu faz é dar submit num formulário – não necessariamente que faça envio de e-mail – pela JQuery, né?
É mais ou menos o que eu mostrei nesse post aqui, http://www.andafter.org/blogs/odesenvolvedor/publicacoes/usando-a-prototype-passo-2-submit-de-form-por-ajax_587.html, usando a Prototype, que fiz lá no O Desenvolvedor (http://www.odesenvolvedor.com.br)
[]s!
Isso mesmo!