Ir para conteúdo
Fórum Script Brasil
  • 0

Enviando E-mails Com Php


Beraldo

Pergunta

Saudações, pessoal.

Este artigo se destina a iniciantes em PHP. Quem já conhece bem a linguagem não verá nada de inédito aqui. :)

Uma das dúvidas mais comuns pelos fóruns é o envio de E-Mails usando PHP. É um tema simples, mas que muitos têm dúvidas. Por isso resolvi escrever este tutorial bem básico abordando esse assunto.

Coloquei os principais tipos de campos de formulário, a fim de sanar (ou diminuir) dúvidas concernentes a isso.

Começando pelo formulário HTML, que dispensa explicações:

formulario.html (O formulário não precisa ter extensão .php)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css" media="screen">
<!--
body {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
margin: 15px;
background: #666;
}
fieldset{
width: 430px;
padding: 10px;
background: #ccc;
}
input{
margin-top: 5px;
margin-bottom: 5px;
}
-->
</style>
<title>Formulário de Contato</title>
</head>
<body>
<form action="enviar.php" method="post">
<fieldset>
<label for="nome">Nome: </label>
<input type="text" name="nome" id="nome" /><br /><br />
Sexo: <input type="radio" name="sexo" id="sexo_f" value="Feminino" />
<label for="sexo_f">Feminino</label>  
<input type="radio" name="sexo" id="sexo_m" value="Masculino" />
<label for="sexo_m">Masculino</label>   
<input type="radio" name="sexo" id="sexo_na" value="Indeciso(a)" />
<label for="sexo_na">Ainda não me decidi</label><br /><br />

<p>Estilos de música de que gosta:</p>

<input type="checkbox" name="musica[]" id="musica_r" value="Rock" />
<label for="musica_r">Rock</label><br />
<input type="checkbox" name="musica[]" id="musica_e" value="Erudita" />
<label for="musica_e">Música Erudita</label><br />
<input type="checkbox" name="musica[]" id="musica_j" value="Jazz" />
<label for="musica_j">Jazz</label><br /><br />

<label for="assunto">Assunto: </label>
<select name="assunto" id="assunto">
<optgroup label="Assunto">
<option value="duvidas">Dúvidas</option>
<option value="sugestoes">Sugestões</option>
</optgroup>
</select>
<br /><br />

<p><label for="mensagem">Mensagem:</label></p>
<textarea rows="5" cols="30" name="mensagem" id="mensagem"></textarea><br /><br />
<input type="submit" value="Enviar" />
</fieldset>
</form>
</body>
</html>
*Inseri "[]" nos nomes dos checkboxes para que o script PHP interprete a variável como uma matriz (array) Agora vamos ao que interessa: o script PHP. :) Primeiro pegamos as variáveis vinda do formulário:
$nome = $_POST['nome'];
$sexo = $_POST['sexo'];
$musica = $_POST['musica'];
$assunto = $_POST['assunto'];
$mensagem = nl2br($_POST['mensagem']);
Notem que usei a função nl2br() para transformar as quebras de linha do textarea em quebras de linha HTML. Vale lembrar que o nome da vaariável não precisa ser necessariamente igual ao nome do atributo name do campo do formulário. Agora vamos transformar a array $musica em uma string comum usando a função foreach():
foreach ($musica as $x)
$estilos .= $x."<br />";
* Como só há um comando no loop, não há necessidade de se usar chaves ({ e }). Agora vamos definir o e-mail destinatário, a mensagem e o cabeçalho do E-Mail.
$para = "seu_email@dominio.com";// e-mail que receberá a mensagem
$mensagem = "
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head>
<title>Contato</title>
</head>
<body>
Nome: <strong>$nome</strong><br />
Sexo: <strong>$sexo</strong><br />
Estilos Musicais:<br /><strong>$estilos</strong><br/><br />
Mensagem: <br /><strong>$mensagem</strong>
</body></html>
";
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/html; charset=iso-8859-15\r\n";
$header .= "From: $nome <$email>";
O header From: faz aparecer o nome/e-mail do visitante no campo "De" do e-mail. Não peguei o e-mail do usuário nesse exemplo; esse "trabalho" fica para vocês! ;) Os outros dois headers fazem o servidor de e-mail reconhecer que a mensagem está em HTML. Finalmente a parte que envia o e-mail:
if (mail ($para, $assunto, $mensagem, $header))
  echo "E-Mail enviado!";
    else
      echo "Erro ao enviar o E-Mail";
O código PHP integralmente:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css" media="screen">
<!--
body {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
margin: 15px;
background: #666;
}
</style>
<title>Contato</title>
</head>
<body>
<?php
$nome = $_POST['nome'];
$sexo = $_POST['sexo'];
$musica = $_POST['musica'];
$assunto = $_POST['assunto'];
$mensagem = nl2br($_POST['mensagem']);

foreach ($musica as $x)
$estilos .= $x."<br />";

$para = "seu_email@dominio.com";// e-mail que receberá a mensagem
$mensagem = "
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head>
<title>Contato</title>
</head>
<body>
Nome: <strong>$nome</strong><br />
Sexo: <strong>$sexo</strong><br />
Estilos Musicais:<br /><strong>$estilos</strong><br/><br />
Mensagem: <br /><strong>$mensagem</strong>
</body></html>
";
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/html; charset=iso-8859-15\r\n";
$header .= "From: $nome <$email>";

if (mail ($para, $assunto, $mensagem, $header))
  echo "E-Mail enviado!";
    else
      echo "Erro ao enviar o E-Mail";
?>
</body>
</html>

Espero que este artigo tenha ajudado.

Abraços

Link para o comentário
Compartilhar em outros sites

  • Respostas 63
  • Created
  • Última resposta

Top Posters For This Question

Posts Recomendados

  • 0
Qual endereço de SMTP você colocou?

O erro diz que não conseguiu conectar aos servidores smtp1.site.com e smtp2.site.com. Nenhum deles são servidores válidos.

mas uma pergunta isso que estou fazendo autenticara o e-mail????

e outra....

se for autenticar

me passa um e-mail valido que autentica e não seja reconhecido como Spam....

Link para o comentário
Compartilhar em outros sites

  • 0

beleza... até um certo ponto ocorreu bem mas deu esse erro

Ocorreu um erro em nosso servidor, desculpe.A mensagem não pode ser enviada Erro: Language string failed to load: from_failedfrom@email.com

olha o código do que esta lá

$mail = new PHPMailer();

$mail->IsSMTP(); // mandar via SMTP
$mail->Host = "smtp.mail.yahoo.com.br"; // Seu servidor smtp
$mail->SMTPAuth = true; // smtp autenticado
$mail->Username = "cadastromudarkfox"; // usuário deste servidor smtp
$mail->Password = "xxxxxxxx"; // senha

$mail->From = "from@email.com";
$mail->FromName = "Mailer";
$mail->AddAddress("$ps_mail","Josh Adams"); 
$mail->AddAddress("suport@mudarkfox.com"); // optional name
$mail->AddReplyTo("suport@mudarkfox.com","Information");

$mail->WordWrap = 50; // set word wrap
$mail->AddAttachment("/var/tmp/file.tar.gz"); // attachment
$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); 
$mail->IsHTML(true); // send as HTML

$mensagem = ' 
<p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Ola '.$login.'!</p>
<p>Abaixo está o seu codigo de confirmação:</p>
<p><strong><a href="http://www.mudarkfox.com/validar.php?chave='.$chave.'">http://www.mudarkfox.com/validar.php?chave='.$chave.'</a></strong></p>
<p>Entre neste endereço para ativar o seu cadastro.</p>
<p>Atenciosamente, Seu Site.</p>
</font></p>';

$mail->Subject = "Here is the subject";
$mail->Body = "$mensagem";
$mail->AltBody = "This is the text-only body";

if(!$mail->Send())
{
echo "A mensagem não pode ser enviada 
";
echo "Erro: " . $mail->ErrorInfo;
exit;
}

echo "Mensagem enviada";
?>

Link para o comentário
Compartilhar em outros sites

  • 0

Olá,

Meu nome é Heitor, e estou muito confuso, mas preciso muito entender este tópico, acredito que alguém poderia me ajudar.

Bom eu sou novo no ramo, e fiz pra "quebrar o galho" essa página:

www.divinaprov.com.br

como podem ver é bem simples, mas acontece o seguinte, na parte "Contato" eu queria fazer do jeito descrito aqui, mas não entendi bem. Como faço no Dreamweaver na área Designer, eu não entendo 100% dos códigos HTML, imagina PHP :/

Tem como me direcionar certinho, pra eu saber melhor como fazer, pra enviar a parte de contato, direto do site, sem interferência do Outlook?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.




  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...