Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, to usando uma classe SMTP já bem conhecida e meu code também não é nada complexo. Basicamente, ele pega os dados do formulario e envia o email pra mim. Se o envio dá certo, ele manda também uma copia à pessoa. Aparentemente o código está certo, pois ele funcionava perfeitamente usando a função mail() do php, mas agora com smtp ele não está enviando a cópia à pessoa.
Sou novato no PHP e gostaria de algumas orientações. Que testes eu poderia fazer pra descobrir o problema?
Grato pela atenção.
Segue o code
CLASSE SMTP
<?
class Smtp{
var $conn;
var $user;
var $pass;
var $debug;
function Smtp($host){
$this->conn = fsockopen($host, 25, $errno, $errstr, 30);
$this->Put("EHLO $host");
}
function Auth(){
$this->Put("AUTH LOGIN");
$this->Put(base64_encode($this->user));
$this->Put(base64_encode($this->pass));
}
function Send($to, $from, $subject, $msg){
$this->Auth();
$this->Put("MAIL FROM: " . $from);
$this->Put("RCPT TO: " . $to);
$this->Put("DATA");
$this->Put($this->toHeader($to, $from, $subject));
$this->Put("\r\n");
$this->Put($msg);
$this->Put(".");
$this->Close();
if(isset($this->conn)){
return true;
}else{
return false;
}
}
function Put($value){
return fputs($this->conn, $value . "\r\n");
}
function toHeader($to, $from, $subject){
$header = "Message-Id: <". date('YmdHis').".". md5(microtime()).".". strtoupper($from) ."> \r\n";
$header .= "From: <" . $from . "> \r\n";
$header .= "To: <".$to."> \r\n";
$header .= "Subject: ".$subject." \r\n";
$header .= "Date: ". date('D, d M Y H:i:s O') ." \r\n";
$header .= "X-MSMail-Priority: Low \r\n";
$header .= "MIME-Version: 1.0 \r\n";
$header .= "Content-type: text/html; charset=utf-8\r\n";
return $header;
}
function Close(){
$this->Put("QUIT");
if($this->debug == true){
while (!feof ($this->conn)) {
echo fgets($this->conn) . "<br>\n";
}
}
return fclose($this->conn);
}
}
?>
PAGINA QUE FAZ O ENVIO
<?php include ('smtp.class.php'); ?>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="content-language" content="pt-br">
<?
// Configuração da classe.smtp.php - AQUI TÁ TUDO CERTO COM MEUS DADOS
$host = "MEU SERVIDOR";
$smtp = new Smtp($host);
$smtp->user = "meuemail@dominio.com.br";
$smtp->pass = "minhasenha";
$smtp->debug = false; // true ele envia o email pra mim e imprime a lista do que faz e para, ignorando o resto do code. Eu deixo false, pois assim ele não "debuga" e continua executando o code ate o fim.
// Datas
$hoje_tmp = getdate();
$hoje = ($hoje_tmp[hours].":".$hoje_tmp[minutes].":".$hoje_tmp[seconds]);
$dia_hoje = ($hoje_tmp[mday]."/".$hoje_tmp[mon]."/".$hoje_tmp[year]);
// Dados do Formulario
$nome = $_POST["nome"];
$email = $_POST["email"];
$bairro = $_POST["bairro"];
$tel = $_POST["tel"];
$mensagem = $_POST["mensagem"];
//Transforma em variável global a variável e-mail
global $email;
// Verifica email
function validaEmail($all) {
$conta = "^[a-zA-Z0-9\._-]+@";
$domino = "[a-zA-Z0-9\._-]+.";
$extensao = "([a-zA-Z]{2,4})$";
$pattern = $conta.$domino.$extensao;
if (ereg($pattern, $all))
return true;
else
return false;
}
// Se válido, envia o e-mail
if (validaEmail($email)) {
$to = "meuemail@dominio.com.br";
$from = $email;
$subject = "Mensagem bla bla bla";
$msg = "<b>Informações do Remetente:</b><br>";
$msg .= "Nome: $nome<br>";
$msg .= "E-mail: $email<br>";
$msg .= "Bairro: $bairro<br>";
$msg .= "Telefone: $tel<br><br>";
$msg .= "<b>Mensagem:</b><br>";
$msg .= "$mensagem";
$enviou = $smtp->Send($to, $from, $subject, $msg);echo "<script>window.location.href='email_invalido.php'</script>";
}
// Envia cópia ao remetente
if ($enviou){
$to = $email;
$from = "meuemail@dominio.com.br";
$subject = "Re: Mensagem bla bla bla";
$msg = "Olá <b>$nome!</b><br><br>";
$msg .= "Sua mensagem foi recebida pela... Obrigado!<br>";
$msg .= "Por favor, não responda este e-mail, este é um serviço automático.<br><br>";
$msg .= "--------------------------------------------------------------------<br><br>";
$msg .= "<b>Mensagem:</b><br>";
$msg .= "$mensagem<br>";
$msg .= "<b>Enviada em:</b> $dia_hoje<br><br>";
$msg .= "--------------------------------------------------------------------<br><br>";
$msg .= "Caso não tenha enviado a mensagem acima, desconsidere este e-mail.<br>";
$smtp->Send($to, $from, $subject, $msg);
echo "<script>window.location.href='enviado.php'</script>";
}echo "<script>window.location.href='erro_envio.php'</script>";
}
?>Carregando comentários...