Jump to content


Photo

Formulario De Contato (Host Uol)


  • Faça o login para participar
2 replies to this topic

#1 Web.Hard

Web.Hard

    Novato no fórum

  • Usuários
  • 20 posts
  • Sexo:Masculino
  • Localidade:Pindamonhangaba - SP

Posted 17/04/2011, 15:27

Bom dia,

Migrei minha hospedagem da locaweb para UOL. O site funcionou direitinho, porém o formulario de contato não envia mensagens de pessoas que possuem email @ hotmail, @gmail, @ msn, @ yahoo etc...Já falei com o atendimento deles umas 40 vezes, abri 3 chamados, já testei os códigos das Faq e tópicos de ajuda deles umas 100 vezes e nada dos emails chegarem, já estou a mais de uma semana trabalhando nisso e já não sei mais por onde recomeçar. Falam de autenticação SMTP e já testei o PHPmailer mais não chegou a funcionar. Meu site é em Flash com Action Script 3. Seguem os códigos do send_email.php e a action do formulario caso seja preciso:

send_mail.php

<?php

$contact_name = $_POST['nome'];
$contact_email = $_POST['email'];
$contact_subject = $_POST['assunto'];
$contact_message = $_POST['mensagem'];

if( $contact_name == true )
{
$destinatarios = "contato@meudominio.com.br";
$remetente = "contato@meudominio.com.br";
$host = "smtp.meudominio.com.br";
$username = "contato@meudominio.com.br";
$password = "123456";
$sender = $contact_email;
$receiver = "contato@meudominio.com.br";
$client_ip = $_SERVER['REMOTE_ADDR'];
$email_body = "Nome: $contact_name \nEmail: $sender \n\nAssunto: $contact_subject \n\nMensagem: \n\n$contact_message \n\nIP: $client_ip \n\nMeu Site";
$extra = "From: $sender\r\n" . "Reply-To: $sender \r\n" . "X-Mailer: PHP/" . phpversion();

if( mail( $receiver, "Mensagem Site - $contact_subject", $email_body, $extra ) )
{
echo "success=yes";
}
else
{
echo "success=no";
}
}
?>

Action do formulario Flash (AS3):

contact_name.text = contact_email.text = contact_subject.text =
contact_message.text = message_status.text = "";

send_button.addEventListener(MouseEvent.CLICK, submit);
reset_button.addEventListener(MouseEvent.CLICK, reset);

var timer:Timer;
var var_load:URLLoader = new URLLoader;
var URL_request:URLRequest = new URLRequest( "send_email.php" );
URL_request.method = URLRequestMethod.POST;

function submit(e:MouseEvent):void
{
if( contact_name.text == "" || contact_email.text == "" ||
contact_subject.text == "" || contact_message.text == "" )
{
message_status.text = "* Por favor, preencha todos os campos.";
}
else if( !validate_email(contact_email.text) )
{
message_status.text = "* Por favor, insira um e-mail válido.";
}
else
{
message_status.text = "enviando...";

var email_data:String = "nome=" + contact_name.text
+ "&email=" + contact_email.text
+ "&assunto=" + contact_subject.text
+ "&mensagem=" + contact_message.text;

var URL_vars:URLVariables = new URLVariables(email_data);
URL_vars.dataFormat = URLLoaderDataFormat.TEXT;

URL_request.data = URL_vars;
var_load.load( URL_request );
var_load.addEventListener(Event.COMPLETE, receive_response );
}
}

function reset(e:MouseEvent):void
{
contact_name.text = contact_email.text = contact_subject.text =
contact_message.text = message_status.text = "";
}

function validate_email(s:String):Boolean
{
var p:RegExp = /(\w|[_.\-])+@((\w|-)+\.)+\w{2,4}+/;
var r:Object = p.exec(s);
if( r == null )
{
return false;
}
return true;
}

function receive_response(e:Event):void
{
var loader:URLLoader = URLLoader(e.target);
var email_status = new URLVariables(loader.data).success;

if( email_status == "yes" )
{
message_status.text = "Obrigado! Sua mensagem foi enviada.";
timer = new Timer(500);
timer.addEventListener(TimerEvent.TIMER, on_timer);
timer.start();
}
else
{
message_status.text = "Erro! Sua mensagem não foi enviada.";
}
}

function on_timer(te:TimerEvent):void
{
if( timer.currentCount >= 10 )
{
contact_name.text = contact_email.text = contact_subject.text =
contact_message.text = message_status.text = "";
timer.removeEventListener(TimerEvent.TIMER, on_timer);
}
}

Qualquer ajuda é bem vinda.
Obrigado a todos.
i7 860 (3.6 Ghz) / Asus P7P55D Deluxe / Sapphire HD 5850 / Corsair 8 Gb DDR3 1.550 Mhz / Seagate 1 Tb Raid 0 / Corsair 750W / Asus Vento / Cooler Master V8 (Windows 7 Ultimate 64Bits)

#2 Leonardo Garcia

Leonardo Garcia

    Normal

  • Usuários
  • 110 posts
  • Sexo:Masculino
  • Localidade:Londrina Paraná

Posted 25/04/2011, 03:06

Antes de tudo=> altere o send_mail.php para send_mail_original.php para vc ter um backup...
depois faça um novo send_mail.php com o conteudo tirado da propria UOL===>

seu novo send_mail.php

<?php

/*digite os destinatarios separados por virgula*/
$destinatarios = 'email-de-teste@seu-dominio, email-de-teste-2@outro-dominio';
/*usuario ou nome completo da conta criada em sua hospedagem, como por exemplo teste@seudominio*/
$usuario = 'usuario@seu-dominio';
/*senha da conta de email acima*/
$senha = 'senha-do-usuario';
/*nome do destinatario no qual receberá a mensagem*/
$nomeDestinatario = 'mensagem do site';

/*abaixo as veriaveis principais, que devem conter em seu formulario*/
$nomeRemetente = $_POST['nomeRemetente'];
$resposta = $_POST['email'];
$assunto = $_POST['assunto'];
$_POST['mensagem'] = nl2br($_POST['mensagem']);

/***********************************A PARTIR DAQUI NAO ALTERAR************************************/
foreach ($_POST as $dados['me1'] => $dados['me2'])

{

$dados['me3'][] = '<b>'.$dados['me1'].'</b>: '.$dados['me2'];

}

$dados['me3'] = '<hr><h4>Mensagem do site</h4>'.implode('<br>', $dados['me3']).'<hr>';

$dados['email'] = array('usuario' => $usuario, 'senha' => $senha, 'servidor' => 'smtp.'.substr(strstr($usuario, '@'), 1), 'nomeRemetente' => $nomeRemetente, 'nomeDestinatario' => $nomeDestinatario, 'resposta' => $resposta, 'assunto' => $assunto, 'mensagem' => $dados['me3']);

ini_set('php_flag mail_filter', 0);

$conexao = fsockopen($dados['email']['servidor'], 587, $errno, $errstr, 10);
fgets($conexao, 512);

$dados['destinatarios'] = explode(',', $destinatarios);

foreach ($dados['destinatarios'] as $dados['1'])

{

$dados['destinatarios']['RCPTTO'][] = '< '.$dados['1'].' >';
$dados['destinatarios']['TO'][] = $dados['1'];

}

$dados['cabecalho'] = array('EHLO ' => $dados['email']['servidor'], 'AUTH LOGIN', base64_encode($dados['email']['usuario']), base64_encode($dados['email']['senha']), 'MAIL FROM: ' => '< '.$dados['email']['usuario'].' >', 'RCPT TO:' => $dados['destinatarios']['RCPTTO'], 'DATA', 'MIME-Version: ' => '1.0', 'Content-Type: text/html; charset=iso-8859-1', 'Date: ' => date('r',time()), 'From: ' => array($dados['email']['nomeRemetente'].' ' => '< '.$dados['email']['usuario'].' >'), 'To:' => array($dados['email']['nomeDestinatario'].' ' => $dados['destinatarios']['TO']), 'Reply-To: ' => $dados['email']['resposta'],'Subject: ' => $dados['email']['assunto'], 'mensagem' => $dados['email']['mensagem'], 'QUIT');

foreach ($dados['cabecalho'] as $dados['2'] => $dados['3'])

{

if (is_array($dados['3']))

{

foreach ($dados['3'] as $dados['4'] => $dados['5'])

{

$dados['4'] = empty($dados['4']) ? '' : $dados['4'];
$dados['5'] = empty($dados['5']) ? '' : $dados['5'];

$dados['4'] = is_numeric($dados['4']) ? '' : $dados['4'];

if (is_array($dados['5']))

{

$dados['5'] = "< ".implode(', ', $dados['5'])." >";

}

fwrite($conexao, $dados['2'].$dados['4'].$dados['5']."
", 512).'<br>';
fgets($conexao, 512);

}

}

else

{

$dados['2'] = empty($dados['2']) ? '' : $dados['2'];
$dados['3'] = empty($dados['3']) ? '' : $dados['3'];

$dados['2'] = is_numeric($dados['2']) ? '' : $dados['2'];

if ($dados['2'] == 'Subject: ')

{

fwrite($conexao, $dados['2'].$dados['3']."\r\n", 512).'<br>';
fwrite($conexao, "\r\n", 512).'<br>';
fgets($conexao, 512);

}

elseif ($dados['2'] == 'mensagem')

{

fwrite($conexao, $dados['3']."\r\n.\r\n").'<br>';
fgets($conexao);

}

else

{

fwrite($conexao, $dados['2'].$dados['3']."\r\n", 512).'<br>';
fgets($conexao, 512);

}

}

}

fclose($conexao);


?>

altera como precisar e boa sorte!


Bom dia,

Migrei minha hospedagem da locaweb para UOL. O site funcionou direitinho, porém o formulario de contato não envia mensagens de pessoas que possuem email @ hotmail, @gmail, @ msn, @ yahoo etc...Já falei com o atendimento deles umas 40 vezes, abri 3 chamados, já testei os códigos das Faq e tópicos de ajuda deles umas 100 vezes e nada dos emails chegarem, já estou a mais de uma semana trabalhando nisso e já não sei mais por onde recomeçar. Falam de autenticação SMTP e já testei o PHPmailer mais não chegou a funcionar. Meu site é em Flash com Action Script 3. Seguem os códigos do send_email.php e a action do formulario caso seja preciso:

send_mail.php

<?php

$contact_name = $_POST['nome'];
$contact_email = $_POST['email'];
$contact_subject = $_POST['assunto'];
$contact_message = $_POST['mensagem'];

if( $contact_name == true )
{
$destinatarios = "contato@meudominio.com.br";
$remetente = "contato@meudominio.com.br";
$host = "smtp.meudominio.com.br";
$username = "contato@meudominio.com.br";
$password = "123456";
$sender = $contact_email;
$receiver = "contato@meudominio.com.br";
$client_ip = $_SERVER['REMOTE_ADDR'];
$email_body = "Nome: $contact_name \nEmail: $sender \n\nAssunto: $contact_subject \n\nMensagem: \n\n$contact_message \n\nIP: $client_ip \n\nMeu Site";
$extra = "From: $sender\r\n" . "Reply-To: $sender \r\n" . "X-Mailer: PHP/" . phpversion();

if( mail( $receiver, "Mensagem Site - $contact_subject", $email_body, $extra ) )
{
echo "success=yes";
}
else
{
echo "success=no";
}
}
?>

Action do formulario Flash (AS3):

contact_name.text = contact_email.text = contact_subject.text =
contact_message.text = message_status.text = "";

send_button.addEventListener(MouseEvent.CLICK, submit);
reset_button.addEventListener(MouseEvent.CLICK, reset);

var timer:Timer;
var var_load:URLLoader = new URLLoader;
var URL_request:URLRequest = new URLRequest( "send_email.php" );
URL_request.method = URLRequestMethod.POST;

function submit(e:MouseEvent):void
{
if( contact_name.text == "" || contact_email.text == "" ||
contact_subject.text == "" || contact_message.text == "" )
{
message_status.text = "* Por favor, preencha todos os campos.";
}
else if( !validate_email(contact_email.text) )
{
message_status.text = "* Por favor, insira um e-mail válido.";
}
else
{
message_status.text = "enviando...";

var email_data:String = "nome=" + contact_name.text
+ "&email=" + contact_email.text
+ "&assunto=" + contact_subject.text
+ "&mensagem=" + contact_message.text;

var URL_vars:URLVariables = new URLVariables(email_data);
URL_vars.dataFormat = URLLoaderDataFormat.TEXT;

URL_request.data = URL_vars;
var_load.load( URL_request );
var_load.addEventListener(Event.COMPLETE, receive_response );
}
}

function reset(e:MouseEvent):void
{
contact_name.text = contact_email.text = contact_subject.text =
contact_message.text = message_status.text = "";
}

function validate_email(s:String):Boolean
{
var p:RegExp = /(\w|[_.\-])+@((\w|-)+\.)+\w{2,4}+/;
var r:Object = p.exec(s);
if( r == null )
{
return false;
}
return true;
}

function receive_response(e:Event):void
{
var loader:URLLoader = URLLoader(e.target);
var email_status = new URLVariables(loader.data).success;

if( email_status == "yes" )
{
message_status.text = "Obrigado! Sua mensagem foi enviada.";
timer = new Timer(500);
timer.addEventListener(TimerEvent.TIMER, on_timer);
timer.start();
}
else
{
message_status.text = "Erro! Sua mensagem não foi enviada.";
}
}

function on_timer(te:TimerEvent):void
{
if( timer.currentCount >= 10 )
{
contact_name.text = contact_email.text = contact_subject.text =
contact_message.text = message_status.text = "";
timer.removeEventListener(TimerEvent.TIMER, on_timer);
}
}

Qualquer ajuda é bem vinda.
Obrigado a todos.


Eu podia tá matando, roubando ou me prostituindo. Mas só quero um ponto.

#3 Web.Hard

Web.Hard

    Novato no fórum

  • Usuários
  • 20 posts
  • Sexo:Masculino
  • Localidade:Pindamonhangaba - SP

Posted 02/05/2011, 20:09

Valeu Leonardo,
Já testei desta forma que falou...Não funcionou não...
Estou usando outro código que criei e estou recebendo e-mails....Demora horas mais chegam.
Obrigado mesmo.

Edição feita por: Web.Hard, 02/05/2011, 20:10.

i7 860 (3.6 Ghz) / Asus P7P55D Deluxe / Sapphire HD 5850 / Corsair 8 Gb DDR3 1.550 Mhz / Seagate 1 Tb Raid 0 / Corsair 750W / Asus Vento / Cooler Master V8 (Windows 7 Ultimate 64Bits)




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq