Enviando emails pelo PHP Dúvida

1. Enviando emails pelo PHP Dúvida

Pablo Vaz Gondim Faria
pablim

(usa Ubuntu)

Enviado em 04/06/2012 - 02:21h

Oi galera, mais uma vez vim pedir para que tirem minhas dúvidas a respeito do php.

Queria saber como faço para enviar e-mails pelo PHP usando a função mail()?
Estou tentando enviar o email do meu computador. Eu devo modificar o arquivo de configuração do PHP? Tenho que conseguir algum servidor SMTP?
Quando executo meu código não aparece nenhum erro só a mensagem que meu e-mail não pode ser enviado.

O código que estou tentando enviar os email é este:

<?php
$foiEnviado = isset($_POST["foiEnviado"]) ? ($_POST["foiEnviado"]): "";
$emailDestino = isset($_POST["emailDestino"]) ? ($_POST["emailDestino"]): "";
$emailRemetente = isset($_POST["emailRemetente"]) ? ($_POST["emailRemetente"]): "";
$assunto = isset($_POST["assunto"]) ? ($_POST["assunto"]): "";
$mensagem = isset($_POST["mensagem"]) ? ($_POST["mensagem"]): "";

if ($foiEnviado){
if ($emailDestino){
if (mail($emailDestino, $assunto, $mensagem, "From: $emailRemetente")){
print("Seu e-mail foi enviado com sucesso!");
}else{
print("Seu e-mail não foi enviado devido a um erro no sistema!");
}
}else{
print("Por favor digite o e-mail de destino!");
}
}
?>

<form action="email.php" method="post">
E-mail de destino: <br><input type="text" name="emailDestino" size="50"><br>
Seu e-mail: <br><input type="text" name="emailRemetente" size="50"><br>
Assunto: <br><input type="text" name="assunto" size="80"><br>
Mensagem: <br><textarea name="mensagem" rows="10" cols="50"></textarea><p>
<input type="hidden" name="foiEnviado" value="true">
<input type="submit" name="enviar" value="Enviar!">
</form>


O php.ini está configurado na parte de email assim:

[mail function]
; For Win32 only.
; http://php.net/smtp
;SMTP = localhost
; http://php.net/smtp-port
;smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = me@example.com

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "/usr/sbin/sendmail -t -i"

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = On

; Log all mail() calls including the full path of the script, line #, to address and headers
;mail.log =


Obrigadoo..


  


2. Re: Enviando emails pelo PHP Dúvida

Khal
valtingojer

(usa openSUSE)

Enviado em 04/06/2012 - 07:42h

Aparentemente está tudo OK com o código PHP.
Se possível, faça o up do seu arquivo e teste o recurso de modo online.
Se não estiver funcionando apenas em modo local, é necessário rever a configuração local para envio.
Particularmente sempre usei o online para testar envio de email, então não sei falar sobre a conf do .ini


3. Servidor de email

Perfil removido
removido

(usa Nenhuma)

Enviado em 04/06/2012 - 08:52h

A sua pergunta já responde bastante coisa, repare nas configurações do ini.

sendmail_path = "/usr/sbin/sendmail -t -i"


Ou seja, a máquina que hospeda sua página está com o sendmail ou outro programa para envio de mensagem configurado corretamente?

Antes de culpar o PHP ou o código, é verificar se o serviço que o PHP vai utilizar está funcionando corretamente.

Acho que deve ajudar.








4. Re: Enviando emails pelo PHP Dúvida

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 04/06/2012 - 11:18h

Outra opção, que uso, e usar o PHPMAILER.

Ele e muito versátil:

http://code.google.com/a/apache-extras.org/p/phpmailer/
Baixe o tar.gz descompacte e veja o arquivo de exemplo que ensina com clareza como usá-lo.

Obs.: Não vai nem precisar se preocupar com cliente SMTP Windows ou Linux!


5. Re: Enviando emails pelo PHP Dúvida

Pablo Vaz Gondim Faria
pablim

(usa Ubuntu)

Enviado em 04/06/2012 - 12:07h

valtingojer escreveu:

Aparentemente está tudo OK com o código PHP.
Se possível, faça o up do seu arquivo e teste o recurso de modo online.
Se não estiver funcionando apenas em modo local, é necessário rever a configuração local para envio.
Particularmente sempre usei o online para testar envio de email, então não sei falar sobre a conf do .ini


Como faço para testa-lo de modo online?


6. Re: Enviando emails pelo PHP Dúvida

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 04/06/2012 - 15:56h

pablim escreveu:

Como faço para testa-lo de modo online?



Primeiro irá precisar ter um domínio válido para uso na internet.
Registre o domínio em http://www.registro.br/

Configure um servidor DNS usando o domínio registrado.
Para maiores informações sobre como configurar um servidor DNS no Linux: http://mundodacomputacaointegral.blogspot.com.br/2011/09/configurando-servidor-dns-bind-no-linux.htm...

Configure um servidor de E-mail (MTA).
Recomendado Postfix.

É necessário também liberar as portas 25(SMTP),110(POP),143(IMAP), 53(DNS) para o correto funcionamento do envio e recebimento de e-mails.
Feito, isso faça um teste com Telnet para enviar um e-mail com domínio utilizado, e veja se recebeu.

Ah, antes de tudo isso, é importante lembrar se seu provedor de acesso disponibiliza as portas 25,110,143,53. Verifique.

Verificando e feito corretamente deve funcionar o envio de e-mail com PHP.


7. RES: Enviando emails pelo PHP Dúvida

Paulo Ricardo Tobias Pedreira
paulinhotobias

(usa Debian)

Enviado em 05/06/2012 - 01:30h

pablim... com esse simples formula&#341;io e código php você já consegue mandar os dados digitados no formulário para o email desejado...

<!-- Neste formulário será enviado nome, email, assunto e mensagem, pelo method POST para arquivo envia.php dentro do diretório emailphp.-->

<form name="contato" method="post" enctype="multipart/form-data" action="emailphp/envia.php">
<label>Nome: <input type="text" name="nome"/></label>

<label>Email:<input type="text" name="email" /></label>

<label>Assunto<input type="text" name="assunto" /></label>

<label>Mensagem:<textarea rows="1" cols="1" name="textarea" id="textarea"></textarea></label>

<input type="submit" name="enviar" value="Enviar">
<input type="reset" value="limpar">

</form>


Esse é o código php que recebe pelo method post os dados do formulário

<?php

//Setando as variaveis para receberem os dados

$nome = $_POST['nome'];
$email = $_POST['email'];
$assunto = $_POST['assunto'];
$textarea = $_POST['textarea'];

//Mail_destino, é para qual email deseja que vá os dados preenchidos no formulário

$mail_destino = "atendimento@teste.com.br";

//A variavel $msg recebe e concagtena os conteúdos das variáveis

$msg.="$mail_header\n\n";
$msg.="Nome: $nome\n";
$msg.="Email: $email\n";
$msg.="Assunto: $assunto\n";
$msg.="Mensagem: $textarea\n";

//aqui envia para o email de destino...

mail($mail_destino , "Frase ", $msg,"From:$nome<$email>");

//após ser enviado os dados do formulário para emailphp/envia.php a função "header" faz o redirecionamento para a página do formulário de contato

header("location: ../contato.html");
?>



8. Re: Enviando emails pelo PHP Dúvida

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 05/06/2012 - 01:54h

@paulinhotobias, isso so vai funcionar se no php.ini tiver configurado corretamente o cliente de smtp.

Recomendo fortemente o uso do PHPMAILER que passei o link acima, nem precisa se preocupar com as configurações, uso nas minhas aplicações, assim nem precisa se preocupar com migração de servidor ;-)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts