Ir ao conteúdo
  • Cadastre-se
Battu

Envio de informações de formulário

Recommended Posts

Bom dia;

 

Implementei uma seção de contato por meio de um formulário, com informações básicas como nome, email, assunto e a mensagem. usei a tag

 

<form action:"MAILTO:meuusuario@meudominio.com">,

 

porém, quando clico para enviar, aparece uma janela pedindo qual aplicativo eu gostaria de abrir (outlook, por exemplo). O que eu gostaria que acontecesse é que, ao clicar no botão enviar, automaticamente a mensagem fosse enviada, sem necessidade de um programa externo. Estou usando a action errada?

Obrigado pela compreensão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Battu, boa tarde

 

O envio de email vai depender de que linguagem de programação esta utilizando.

Se tiver usando o PHP eu recomendo que de uma pesquisada sobre o PHPMailer, aqui tem um link mostrando como ele funciona: http://blog.thiagobelem.net/enviar-e-mails-pelo-php-usando-o-phpmailer

só pegar o exemplo e implementar, qualquer coisa pede ajuda aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Ygor. Estou usando somente HTML mesmo, com CSS e .JS, achei no google algumas soluções, mas apenas para PHP, assim como você indicou. Uma solução para usar em HTML ainda não consegui.

Um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites
37 minutos atrás, Battu disse:

Boa tarde Ygor. Estou usando somente HTML mesmo, com CSS e .JS, achei no google algumas soluções, mas apenas para PHP, assim como você indicou. Uma solução para usar em HTML ainda não consegui.

Um abraço.

Battu só com HTML você não vai conseguir enviar as informações para um email, HTML é apenas Visual ele não realiza nenhuma ação nos dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não existe nenhum script em JavaScript ou algo assim, que faça algo do tipo? Obrigado Ygor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Battu Olá.  Não.  É preciso de uma intervenção de linguagem de programação server side.

Só com php ou outra linguagem.

O mais comum é php.  Usando o phpmailer como já falaram você resolve facilmente

 

Você pode até usar  mailto... mas não no <form> se não pode enviar dados...

 teria de fazer desta maneira:

 

<a href="MAILTO:meuusuario@meudominio.com">Envie-me um E-mail</a>

Desta forma vai funcionar... MAS vai exigir um programa de e-mail... por exemplo o outook na máquina do usuário.

Se quiser enviar com dados escritos do formulário só com PHP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite, a primeira vez que usei a função MAILTO eu também tive esse problema de abrir o Outlook, faz o seguinte coloque:

<form action="enviar.php" name="form_contato" method="post">

coloque um input type="submit" para enviar a form, e na página enviar.php coloque suas variáveis com _POST, ex:

$nome = $_POST['nome'];
$email = $_POST['email'];
$telefone = $_POST['tel'];
$mensagem = $_POST['msg'];

Se quiser você pode criar uma tabela para deixar mais bonito e guardar o conteúdo dentro de uma variável:

$arquivo = "
    <style type='text/css'>
    body {
    margin:0px;
    font-family:Verdane;
    font-size:12px;
    color: #666666;
    }
    a{
    color: #666666;
    text-decoration: none;
    }
    a:hover {
    color: #FF0000;
    text-decoration: none;
    }
    </style>
    <html>
        <table width='510' border='1' cellpadding='1' cellspacing='1' bgcolor='#CCCCCC'>
            <tr>
              <td>
    <tr>
                 <td width='500'>Nome:$nome</td>
                </tr>
                <tr>
                  <td width='320'>E-mail:<b>$email</b></td>
       </tr>
        <tr>
                  <td width='320'>Telefone:<b>$telefone</b></td>
                </tr>
                <tr>
                  <td width='320'>Mensagem:$mensagem</td>
                </tr>
            </td>
          </tr> 
          <tr>
            <td>Este e-mail foi enviado em <b>$data_envio</b> Ã s <b>$hora_envio</b></td>
          </tr>
        </table>
    </html>
    ";

 

 

Depois você vai criar uma variável com seu email ex:

$emailenviar = "seuemail@gmail.com";
	$destino = $emailenviar;
	$assunto = "Fale conosco";

	$headers  = 'MIME-Version: 1.0' . "\r\n";
		$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
		$headers .= 'From: Contato <$nome>';
	 
	$enviaremail = mail($destino, $assunto, $arquivo, $headers);

e se quiser voltar para sua página inicial:

if($enviaremail){
	header("Location: index.php");
	} else {
	header("Location: error.php");
	}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ImTheUnix essa é uma possível solução também, porém recomendo o PHPMailer o mail do PHP costuma das muito trabalho quando da erro, além da configuração do PHPMailer ser melhor e com mais opções

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigos. Primeiramente, muitissimo obrigado pelo empenho na ajuda, obrigado mesmo. Como devem ter percebido, eu sou bem novato nesse assunto, e realmente nunca fiz absolutamente nada em .php, então, estou lendo alguns tutoriais básicos dessa linguagem, para tentar fazer como os amigos recomendaram, mas ainda sem resultados satisfatórios. Continuarei tentando, e postarei aqui a minha evolução.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ImTheUnix Acho que estou conseguindo entender o básico do básico do php, mas quando clico em enviar, me retorna a seguinte mensagem:

 

Warning: mail(): SMTP server response: 504 5.5.2 <$name>: Sender address rejected: need fully-qualified address in D:\web\localuser\teste\www\enviar.php on line 58

 

Meu código do formulário na página html está assim:

 

<form action="enviar.php" name="form_contato" method="post">
	<div class="input-field">
		<input type="text" name="name" class="form-control" placeholder="Seu Nome...">
	</div>
	<div class="input-field">
		<input type="email" name="email" class="form-control" placeholder="Seu Email...">
	</div>
	<div class="input-field">
		<input type="text" name="subject" class="form-control" placeholder="Assunto...">
	</div>
	<div class="input-field">
		<textarea name="message" class="form-control" placeholder="Mensagem..."></textarea>
	</div>
	<button type="submit" id="submit" class="btn btn-blue btn-effect">Enviar</button>
</form>

e o código em php que você passou, no arquivo enviar.php, assim:

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];


$arquivo = "
    <style type='text/css'>
    body {
    margin:0px;
    font-family:Verdane;
    font-size:12px;
    color: #666666;
    }
    a{
    color: #666666;
    text-decoration: none;
    }
    a:hover {
    color: #FF0000;
    text-decoration: none;
    }
    </style>
    <html>
        <table width='510' border='1' cellpadding='1' cellspacing='1' bgcolor='#CCCCCC'>
            <tr>
              <td>
    <tr>
                 <td width='500'>Nome:$name</td>
                </tr>
                <tr>
                  <td width='320'>E-mail:<b>$email</b></td>
       </tr>
        <tr>
                  <td width='320'>Assunto:<b>$subject</b></td>
                </tr>
                <tr>
                  <td width='320'>Mensagem:$message</td>
                </tr>
            </td>
          </tr> 
          <tr>
            <td>Este e-mail foi enviado em <b>$data_envio</b> Ã s <b>$hora_envio</b></td>
          </tr>
        </table>
    </html>
    ";
	
	$emailenviar = "pfbattu@gmail.com";
	$destino = $emailenviar;
	$assunto = "Fale conosco";

	$headers  = 'MIME-Version: 1.0' . "\r\n";
		$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
		$headers .= 'From: Contato <$name>';
	 
	$enviaremail = mail($destino, $assunto, $arquivo, $headers);
	
?>

Onde estou errando? Obrigado novamente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Ygor AnjosBom dia Ygor. Então, eu tentei também, conforme o link que você passou. Adicionei os arquivos class.phpmailer.php e class.smtp.php dentro de uma pasta chamada phpmailer, conforme explicado no link, e usei o mesmo código de exemplo de lá, mas sem seucesso, a mensagem de erro é:

 

Fatal error: Class 'SMTP' not found in D:\web\localuser\teste\www\phpmailer\class.phpmailer.php on line 1466

 

Vi nos comentários que outras pessoas também estão recebendo esse erro, porém, não há nenhuma resposta lá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Battu Provavelmente é porque seu site não está hospedado, ele precisa usar a "secretaria eletrônica" do host para enviar a mensagem, eu recomendo hospedar no hostinger.com.br

adicionado 1 minuto depois

@Battu SMTP ou Simple Mail Transfer Protocol é a ferramenta utilizada para enviar o e-mail, por isso deve estar hospedado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue esse tutorial

 

http://www.linhadecomando.com/php/php-usando-phpmailer-para-envio-de-email-com-anexo

 

não esquece de mudar essa linha

 

require_once('class.phpmailer.php');

 

com o local correto do arquivo

adicionado 8 minutos depois
8 minutos atrás, ImTheUnix disse:

@Battu Provavelmente é porque seu site não está hospedado, ele precisa usar a "secretaria eletrônica" do host para enviar a mensagem, eu recomendo hospedar no hostinger.com.br

adicionado 1 minuto depois

@Battu SMTP ou Simple Mail Transfer Protocol é a ferramenta utilizada para enviar o e-mail, por isso deve estar hospedado

p erro ocorreu por que não acho o arquivo com a classe SMTP

se ele estiver rodando local ele só precisa das configurações do servidor de email para fazer o envio do email, não precisa estar necessariamente hospedado

alem de que o hostinger.com.br não deixa você fazer envio de email SMTP com conta free só premiun

Compartilhar este post


Link para o post
Compartilhar em outros sites

Warning: mail(): SMTP server response: 504 5.5.2 <$name>: Sender address rejected: need fully-qualified address in D:\web\localuser\brastextextura\www\enviar.php on line 58

 

a parte em negrito, ele pede acesso ao servidor, com PHPMailer você consegue fazer

qualquer coisa posta a estrutura(em texto só pra saber onde ta os arquivos) de pasta aqui que ajudamos.

Compartilhar este post


Link para o post
Compartilhar em outros sites
51 minutos atrás, Battu disse:

@Ygor Anjos Essa é a estrutura das pastas no servidor:

 

 

estrutura.jpg

 

tem como mandar por texto?

o meu proxy n deixa abrir a imagem aqui

 

ex:

Raiz

-pasta 1

  --subdapasta1

-pasta2

  --subpasta2

    --sub

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Ygor Anjos Ygor, acho que essa etapa não será mais necessária, eu estou quase conseguindo! Era puramente leiguice minha, não sabia que era possível utilizar html junto com php no mesmo código, então, pelo html eu estava chamando outra página em php, que burro! hehe.

 

Enfim, agora com o último exemplo do PHPMailer consegui enviar o email. Porém, no exemplo, ele envia apenas o nome, o assunto e o anexo, eu gostaria de enviar o nome, email do remetente, assunto e a mensagem, mas quando adiciono eses parâmetros, aparece que o email foi enviado com sucesso, porém, não é entregue na minha caixa de entrada. Creio que seja apenas pequenos ajustes. Te agradeço imensamente por toda essa ajuda!

 

Parte do Código do exemplo:

$nome 	    = $_POST['nome'];
 $assunto   = $_POST['assunto'];
 $mensagem  = $_POST['mensagem'];
 $arquivo   = $_FILES["arquivo"];
 
 $corpoMSG = "<strong>Nome:</strong> $nome<br> <strong>Mensagem:</strong> $mensagem";

Meu código:

$name 	    = $_POST['name'];
 $email   = $_POST['email'];
 $subject  = $_POST['subject'];
 $message   = $_POST["message"];
 
 $corpoMSG = "<strong>Nome:</strong> $name<br> <strong>Email:</strong> $email <strong>Assunto:</strong> $subject <strong>Mensagem:</strong> $message";

 

 

Esqueça o que acabei de falar, as mensagens estavam indo para o SPAM e eu não percebi. Enfim, tudo funcionando corretamente agora! Muito obrigado @Ygor Anjos! Muito obrigado @ImTheUnix! Vocês são demais!

Compartilhar este post


Link para o post
Compartilhar em outros sites
<!DOCTYPE html>
	<head>
	</head>
	<body>
      <main>
    	<form action="?acao=enviar" name="form_contato" method="post" enctype="multipart/form-data">
								<div class="input-field">
									<input type="text" name="name" class="form-control" placeholder="Seu Nome...">
									
								</div>
								<div class="input-field">
									<input type="email" name="email" class="form-control" placeholder="Seu Email...">
								</div>
								<div class="input-field">
									<input type="text" name="subject" class="form-control" placeholder="Assunto...">
								</div>
								<div class="input-field">
									<textarea name="message" class="form-control" placeholder="Mensagem..."></textarea>
								</div>
						       	<button type="submit" id="submit" class="btn btn-blue btn-effect">Enviar</button>
							</form>
      </main>
      <?php
if($_GET['acao'] == 'enviar'){
 $name 	    = $_POST['name'];
 $email   = $_POST['email'];
 $subject  = $_POST['subject'];
 $message   = $_POST["message"];
 
 $corpoMSG = "<strong>Nome:</strong> $name<br> <strong>Email:</strong> $email<br> <strong>Assunto:</strong> $subject<br> <strong>Mensagem:</strong> $message";
 // chamada da classe		
 require_once('phpmailer/class.phpmailer.php');
 // instanciando a classe
 $mail   = new PHPMailer();
 // email do remetente
 $mail->SetFrom('pfbattu@gmail.com', 'Contato Site');
 // email do destinatario
 $address = "pfbattu@gmail.com";
 $mail->AddAddress($address);
 // assunto da mensagem
 $mail->Subject = $assunto;
 // corpo da mensagem
 $mail->MsgHTML($corpoMSG);
 
 if(!$mail->Send()) {
   echo "Erro: " . $mail->ErrorInfo;
  } else {
   echo "Mensagem enviada com sucesso!";
  }
}
?>
</body>

Aí está @Ygor Anjos!

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 minutos atrás, Battu disse:

$mail->Subject = $assunto;

a variavel $assunto n esta definida

 

e para enviar o gmail você tem que fazer umas configurações a mais.

depois desse trecho adicione o seguinte

5 minutos atrás, Battu disse:

$mail = new PHPMailer();

$mail->IsSMTP(); // Ativar SMTP 
$mail->SMTPDebug = 0; // Debugar: 1 = erros e mensagens, 2 = mensagens apenas 
$mail->SMTPAuth = true; // Autenticação ativada 
$mail->SMTPSecure = 'ssl'; // SSL REQUERIDO pelo GMail 
$mail->Host = 'smtp.gmail.com'; // SMTP utilizado 
$mail->Port = 587; // A porta 587 deverá estar aberta em seu servidor 
$mail->Username = 'emailgmail'; 
$mail->Password = ''senhagmail;

 

 

fonte: http://www.gn10.com.br/blog/dicas/envie-emails-php-smtp-gmail-google-apps/

adicionado 3 minutos depois

Enviar pelo gmail é mais difil do que parece, se você tiver um servidor de email da empresa fica bem mais fácil de configurar e fazer o envio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Ygor Anjos Ah sim, perdão, acabei te enviando o código que eu estava testando. Coloquei o servidor próprio e funcionou corretamente. Único porém é que a mensagem de "Mensagem enviada" não está aparecendo, e depois do envio, está voltando ao topo da página. Vou pesquisar como colocar um pop-up para dar essa informação de mensagem enviada, e impedir que a rolagem volte ao topo da página.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Ygor Anjos Obrigado Ygor, depois de um fim de semana de descanso, estou voltando pra esse site. Minha limitação no php não me permite saber onde eu deveria adicionar o "header" hehe, mas irei tentar. Quanto ao if, já existe no código, mas não está retornando a mensagem.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×