Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sacofrito

[Resolvido] Funçao mail php

Recommended Posts

Bom dia galera.

Coloquei meu site no ar, porem preciso de algo para o usuario preencher um formulario e esta mensagem chegar em algum endereço de email a meu gosto.

O uso da funçao nao é o problema, seus parametros sao simples. Porem achei varias coisas ensinando a configurar o ´php.ini mas nao estou conseguindo.

 

Uso hospedagem basica da locaweb em linux. Alguem pode me ajudar com um passo a passo ?

 

Agradeceria muito !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu amigo bom dia.

Aqui na empresa onde trabalho, entre vários servidores que temos, um é Locaweb e realmente não precisamos configurar nada para utilizar o email. Porém, nós nunca utilizamos a função mail e sim a classe Phpmailer que tem o mesmo objetivo mas com eficiência comprovadamente maior.

 

Se sua função esta apresentando algum erro, poste o mesmo aqui para que possamos analisar.

Grande Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro colega. Tem como testar localmente esta funcao ? Estou utilizando o WampServer como servidor local.

 

Em producao ainda nao testei.

Vou postar minha rotina de envio de email.

 

$msg = "";
if ($_POST['nome'] == ""){
$msg = "Preencha seu nome!<br>";
}
if ($_POST['email'] == ""){
$msg .= "Preencha seu E-mail!<br>";
}
if ($_POST['assunto'] == ""){
$msg .= "Preencha o assunto!<br>";
}
if ($_POST['msg'] == ""){
$msg .= "Preencha a mensagem a ser enviada!";
}

if ($msg != ""){
echo $msg;
header("Refresh: 2, contato.php"); 
}else{
$nome = $_POST['nome'];
$assunto = $_POST['assunto'];
$msge = "Nome: " . $_POST['nome'] ."\n" . "E-mail : " . $_POST['email'] . "\n" . "Mensagem : " . $_POST['msg'];
$email = $_POST['email'];
mail("contato@fbgsystems.com","$assunto","$msge","From: $nome : $email \n\n");
echo "Mensagem enviada com sucesso!";
header("Refresh: 2, index.php"); 

}

 

Coloquei no ar para testar.

Segue oerro

 

 

Warning: Cannot modify header information - headers already sent by (output started at /home/storage/4/ff/c3/fbgsystems/public_html/superior.php:54) in /home/storage/4/ff/c3/fbgsystems/public_html/enviarmsg.php on line 32

 

Linha em questao > header("Refresh: 2, index.php");

 

E o email nao foi enviado :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se você sabe mas os e-mails estão sofrendo alterações de porta de saida de e-mail então se te ajuda segue o cod esse codigo foi disponibilizado na locaweb pois tive problemas no envio dos meus forms

<?php
if(PHP_OS == "Linux") $quebra_linha = "\n"; //Se for Linux
elseif(PHP_OS == "WINNT") $quebra_linha = "\r\n"; // Se for Windows
else die("Este script nao esta preparado para funcionar com o sistema operacional de seu servidor");


$emaildestinatario = '';

$assunto           = 'Mensagem enviada via site';



$mensagemHTML = '<br>CPF: '.$cpf.
			'<br>Nome: '.$nome.
			'<br>E-mail: '.$email.
			'<br>Cidade: '.$cidade.
			'<br>Tel.: ('.$dddTelA.') '.$telA.
			'<br>Mensagem: '.$mensagemA.'<br>';



$headers = "MIME-Version: 1.1".$quebra_linha;
$headers .= "Content-type: text/html; charset=iso-8859-1".$quebra_linha;

$headers .= "From: ".$emailsender.$quebra_linha;
$headers .= "Return-Path: " . $emailsender . $quebra_linha;

//echo 'versão 1.1';
include ("smtp.class.php");
$host = "smtp.xxxxxx.com.br"; /*host do servidor SMTP */
$mail = "no_reply@xxxxxx.com.br";//o endereço de e-mail deve ser válido, do dominio.
$senha = "xxxxxxxx";//senha do e-mail

/* Configuração da classe.e smtp.class.php */
$smtp = new Smtp($host, 587);
$smtp->user = $mail; /*usuario do servidor SMTP */
$smtp->pass = $senha; /* senha do usuario do servidor SMTP*/
$smtp->debug = true; /*ativa a autenticacao SMTP */


/* Prepara a mensagem para ser enviada. */
/*quem envia*/
$from = $mail;
/*Para quem vai*/
$to = $emaildestinatario;


/* faz o envio da mensagem */
$enviou = $smtp->Send($to, $from, $assunto, $mensagemHTML, "text/html");
?>

 

vou colocar em outro post a class do smtp

 


<?
  class Smtp{
        var $conn;
 var $user;
 var $pass;
 var $debug = true;

 /*Construtor da classe.
  	   Passe como parametro o host SMTP e a porta de conexao. */ 
 function Smtp($host, $port){
	$this->conn = fsockopen($host, $port, $errno, $errstr, 30);
	$this->Put("EHLO $host");
 }

 /*Metodo para Autenticar
   Autentica no server, ja convertendo os dados em base64.*/
 function Auth(){
	$this->Put("AUTH LOGIN");
	$this->Put(base64_encode($this->user));
	$this->Put(base64_encode($this->pass));
	 }

 /*Metodo para enviar a msg.
   Parametros: 'DE:', 'PARA:', 'ASSUNTO','MENSAGEM' */
	 function Send($to, $from, $subject, $msg, $content_type = null){
  		$this->Auth();
	$this->Put("MAIL FROM: " . $from);
	$this->Put("RCPT TO: " . $to);
	$this->Put("DATA");
	if(isset($content_type)){
	    $this->Put($this->toHeader($to, $from, $subject, $content_type));
               }
	else{
	    $this->Put($this->toHeader($to, $from, $subject));
	}
	$this->Put("\n");
	$this->Put($msg);
	$this->Put(".");
  		$this->Close();
	if(isset($this->conn)){
		return true;
	}else{
		return false;
  	}
 }

 /*Metodo Put
   Passa valores para a conexao sock aberta no server.*/
        function Put($value){
	return fputs($this->conn, $value . "\n");
        }

 /*Funcao toHeader
   Prepara e monta o cabecalho da mensagem.
   Aceita como parametro 'DE','PARA','ASSUNTO'
   e 'CONTENT-TYPE'.
   Metodo ja implementado na funcao Send.'*/
 function toHeader($to, $from, $subject, $type = "text/plain"){
	$header  = "Message-Id: <". date('YmdHis').".". md5(microtime()).".". strtoupper($from) ."> \n";
	$header .= "From: <" . $from . "> \n";
	$header .= "To: <".$to."> \n";
	$header .= "Subject: ".$subject." \n";
	$header .= "Date: ". date('D, d M Y H:i:s O') ." \n";
	$header .= "Content-Type: ". $type . "; charset=iso-8859-1 \n";

	return $header;
 }

 /*Funcao Close
   Fechaa a conexao sock apos o envio ser concluido.
   Nao e necessario implementar, pois ja esta implementada 
   na funcao Send*/
 function Close(){
	$this->Put("QUIT");
	if($this->debug == true){
		while (!feof ($this->conn)) {
  				//echo 'Olha: -> '.fgets($this->conn) . "<br>\n";
			fgets($this->conn);
		}
	}
	return fclose($this->conn);
 }

  }
?>


Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, você pode usar a classe PHPMailer, ela não exige essas configurações. Vou deixar aqui um hyperllink de um post que tem os arquivos para download. Só baixar e alterar as configurações.

Link não autorizado removido[/url]

 

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, nao funcionou. Ele demora cerca de 1 minuto para carregar mas nao envia nada.

Segue como configurei

	$nome = $_POST['nome'];
$email = $_POST['email'];
$msg = $_POST['msg'];
$fone = $_POST['fone'];
// aqui comeca rotina disponibilizada pelo locaweb
$assunto = "Mensagem enviada pelo site.";
$quebra_linha = "\n";
$mensagemHTML = '<br>Nome: '.$nome.
				'<br>E-mail: '.$email.
				'<br>Tel.: '.$fone.
				'<br>Mensagem: '.$msg.'<br>';



$headers = "MIME-Version: 1.1".$quebra_linha;
$headers .= "Content-type: text/html; charset=iso-8859-1".$quebra_linha;

$headers .= "From: ".$email.$quebra_linha;
$headers .= "Return-Path: " . $emailsender . $quebra_linha;



include ("smtp.class.php");
$host = "smtp.gmail.com"; /*host do servidor SMTP */
$mail = "meuemail@gmail.com";//o endereço de e-mail deve ser válido, do dominio.
$senha = "XXXXXXXXXXXXXXXX";//senha do e-mail

/* Configuração da classe.e smtp.class.php */
$smtp = new Smtp($host, 587);
$smtp->user = $mail; /*usuario do servidor SMTP */
$smtp->pass = $senha; /* senha do usuario do servidor SMTP*/
$smtp->debug = true; /*ativa a autenticacao SMTP */


/* Prepara a mensagem para ser enviada. */
/*quem envia*/
$from = $email;
/*Para quem vai*/
$to = "meuemail@gmail.com";


/* faz o envio da mensagem */
$enviou = $smtp->Send($to, $from, $assunto, $mensagemHTML, "text/html");

Compartilhar este post


Link para o post
Compartilhar em outros sites

smtp gmail ele não funciona, não sei pq, mas se você colocar o smtp de um site com dominio proprio ele funciona normalmente(pelo menos espero).

 

pois ele fica alocado no seu servidor por exemplo smtp."meudominio".com.br

emeus contato@meudominio.com.br

e a senha é para ele funcionar

 

estou utilizando o codigo em todos os sites que desenvolvo e está funcionando normalmente sendo que a maioria está nos servers da locaweb.

 

vou ver até o que o outro codigo postado aqui para ver se é melhor.

 

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.