Ir para conteúdo

POWERED BY:

Arquivado

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

yuriPereira

sendmail via localhost

Recommended Posts

Boa tarde galera, não posta aqui fazia uns tempos já, não sei como mas perdi meu usuário antigo de mais de 4 anos, enfim, resolvi fazer outro, e depois tento recuperar ele...

A minha dúvida é a seguinte, sou novato em PHP, sempre foquei meus conhecimentos em UX e webdesign, e agora estou querendo fazer um portal para a minha empresa e o form de contato está PRONTO e não consigo testar no localhost, detalhe que o IF condicional da função mail do php me printa que o email foi enviado mas ele não chega de maneira nenhuma no destinatário...


Segue o código php.

<?php

if(!$_POST) exit;

// Email address verification, do not edit.
function isEmail($email) {
	return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));
}

if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");

$name     = $_POST['InputName'];
$email    = $_POST['InputEmail'];
$comments = $_POST['InputMessage'];

if(trim($name) == '') {
	echo '<div class="error_message">Attention! You must enter your name.</div>';
	exit();
} else if(trim($email) == '') {
	echo '<div class="error_message">Attention! Please enter a valid email address.</div>';
	exit();
} else if(!isEmail($email)) {
	echo '<div class="error_message">Attention! You have enter an invalid e-mail address, try again.</div>';
	exit();
} else if(trim($comments) == '') {
	echo '<div class="error_message">Attention! Please enter your message.</div>';
	exit();
} 


if(get_magic_quotes_gpc()) {
	$comments = stripslashes($comments);
}


// Configuration option.
// Enter the email address that you want to emails to be sent to.
// Example $address = "joe.doe@yourdomain.com";

//$address = "example@themeforest.net";
$address = "yuri.pramos@gmail.com";


// Configuration option.
// i.e. The standard subject will appear as, "You've been contacted by John Doe."

// Example, $e_subject = '$name . ' has contacted you via Your Website.';

$e_subject = 'You\'ve been contacted by ' . $name . '.';


// Configuration option.
// You can change this if you feel that you need to.
// Developers, you may wish to add more fields to the form, in which case you must be sure to add them here.

$e_body = "You have been contacted by $name with regards to $subject, their additional message is as follows." . PHP_EOL . PHP_EOL;
$e_content = "\"$comments\"" . PHP_EOL . PHP_EOL;
$e_reply = "You can contact $name via email, $email or via phone $phone";

$msg = wordwrap( $e_body . $e_content . $e_reply, 70 );

$headers = "From: $email" . PHP_EOL;
$headers .= "Reply-To: $email" . PHP_EOL;
$headers .= "MIME-Version: 1.0" . PHP_EOL;
$headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL;
$headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL;

if(mail($address, $e_subject, $msg, $headers)) {

	// Email has sent successfully, echo a success page.

	echo "<fieldset>";
	echo "<div id='success_page'>";
	echo "<h1>Email Sent Successfully.</h1>";
	echo "<p>Thank you <strong>$name</strong>, your message has been submitted to us.</p>";
	echo "</div>";
	echo "</fieldset>";
	

} else {

	echo 'ERROR!';

}

Agora o form propriamente dito...

<form role="form"  class="contato" method="post" action="contact.php">
			    <div class="col-lg-6">
			      
			      <div class="form-group">
			        <label for="InputName">Nome</label>
			        <div class="input-group">
			          <input type="text" class="form-control" name="InputName" id="InputName" placeholder="Entre com seu nome" required="">
			          <span class="input-group-addon"><i class="glyphicon glyphicon-ok form-control-feedback"></i></span></div>
			      </div>
			      <div class="form-group">
			        <label for="InputEmail">Idade</label>
			        <div class="input-group">
			          <input type="text" class="form-control" id="InputIdade" name="InputIdade" placeholder="Entre com a sua idade" required="">
			          <span class="input-group-addon"><i class="glyphicon glyphicon-ok form-control-feedback"></i></span></div>
			      </div>
			      <div class="form-group">
			        <label for="InputEmail">E-mail</label>
			        <div class="input-group">
			          <input type="email" class="form-control" id="InputEmail" name="InputEmail" placeholder="Entre com Email" required="">
			          <span class="input-group-addon"><i class="glyphicon glyphicon-ok form-control-feedback"></i></span></div>
			      </div>
			      
			      <div class="form-group">
			        <label for="InputMessage">Mensagem</label>
			        <div class="input-group">
			          <textarea name="InputMessage" id="InputMessage" class="form-control" rows="5" required=""></textarea>
			          <span class="input-group-addon"><i class="glyphicon glyphicon-ok form-control-feedback"></i></span></div>
			      </div>
			      
			    </div>			  
			  
			  <div class="col-lg-6">
			     
			  <div class="form-group">
			        <label for="InputSEO">Por onde nos conheceu?</label>
			        <div class="input-group">
			          <select class="form-control" id="SelectFeedbackBusca" name="SelectFeedbackBusca" required="">
							  <option>Facebook</option>
							  <option>Instagram</option>
							  <option>Amigos</option>
							  <option>Busca Google</option>
							  <option>Propagandas</option>
							  <option>Outros</option>
						</select>
			          <span class="input-group-addon"><i class="glyphicon glyphicon-ok form-control-feedback"></i></span></div>
			      </div>
			      <div class="form-group">
			        <label for="InputAtivFisica">Nível Atual de Atividade Física</label>
			        <div class="input-group">
			          <select class="form-control" id="SelectAtivFisica" name="SelectAtivFisica" required="">
							  <option>Mais de 5 vezes por semana</option>
							  <option>Entre 3 e 5 vezes por semana</option>
							  <option>Entre 1 e 3 vezes por semana</option>
							  <option>Sou Sedentário</option>
						</select>
			          <span class="input-group-addon"><i class="glyphicon glyphicon-ok form-control-feedback"></i></span></div>
			      </div>
			      <div class="form-group">
			        <label for="InputName">Plano de Interesse</label>
			        <div class="input-group">
			          <select class="form-control" id="SelectAtivFisica" name="SelectAtivFisica" required="">
							  <option>Consultoria Premium</option>
							  <option>Consultoria Básica</option>
							  <option>Acessoria Dieta</option>
						</select>
			          <span class="input-group-addon"><i class="glyphicon glyphicon-ok form-control-feedback"></i></span></div>
			      </div>
			      <div class="form-group">
			        <label for="InputReal">Quanto é 4+3? (Spam Check)</label>
			        <div class="input-group">
			          <input type="text" class="form-control" name="InputReal" id="InputReal" required="">
			          <span class="input-group-addon"><i class="glyphicon glyphicon-ok form-control-feedback"></i></span></div>
			      </div>
			      <input type="submit" name="submit" id="submit" value="Enviar" class="btn btn-info pull-right">
			</form>


Agora meu PHP.ini

[mail function]
; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
SMTP = smtp.gmail.com
smtp_port = 587
sendmail_from = soulfitconsultoria@gmail.com
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
; For Win32 only.
;sendmail_from = postmaster@localhost

Não sei mais o que pode ser, nunca imaginei que fosse essa chatice testar via localhost...

Além disso eu tenho umas dúvidas em relação ao servidos de hospedagem.
Estou usando HostGator, para configurar posteriormente esse sendmail no Cpanel deles é chato assim ou só preciso mudar alguns parametros?Não faço ideia de como fazer isso e não achei nada de cara.

Desde já muito obrigado, tentei botar todas as linhas de código necessária para solução do problema, caso esteja faltando algo me informem por favor, preciso disso. :upset: :upset: :upset:

Compartilhar este post


Link para o post
Compartilhar em outros sites

a função mail em localhost só funcionará se você instalar e configurar corretamente um servidor smtp. E isso dá trabalho.

 

por isso é melhor usar PHPMailer. Veja http://rberaldo.com.br/enviando-e-mails-com-a-classe-phpmailer/

Compartilhar este post


Link para o post
Compartilhar em outros sites

E aew cara,

 

Beleza?
Então, é mais ou menos o que o Beraldo falou mesmo, se você estiver no linux é só instalar o sendmail (nem precisa configurar, só de ter ele instalado muitas vezes já funciona), agora no Windows o buraco é mais em baixo, eu tenho usado muito o phpmailer, como ele indicou.

 

Mas existe uma alternativa para você testar este seu form sem precisar mudar o código, existe uma ferramenta chamada fake sendmail, a qual você pode baixar neste link e depois configurar para que ele utilize algum serviço de email de sua preferência, um tutoria de como fazer isso você encontra aqui.

 

Porém eu recomendo que você utilize a ferramenta indicada (PHP-Mailer) ele é mais maleável para você moldá-lo as suas necessidades (inclusive hosts com smtp autenticado e anexos).

 

Caso queira um tutorial de como usá-lo segue o link.

 

 

Agora, respondendo sua segunda dúvida, no cpanel você não vai precisar fazer nada (em nenhum dos casos), no máximo criar uma conta de email que fará o disparo (visto que o remetente tem que ser um email válido no domínio, na maioria dos casos), sugiro algo como nao-responda ou no-reply@sua-empresa.com.br

 

As configurações só serão feitas no seu script.

 

Abraços,

Compartilhar este post


Link para o post
Compartilhar em outros sites

então gente...Muito obrigado pelas alternativas, mas está um saco mesmo testar via localhost...então estou testando via server mesmo, muito mais simples, obrigado pessoal!

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.