Ir para conteúdo

POWERED BY:

Arquivado

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

Fabiana P. Lourenço

Função Mail bloqueada por hotmail, yahoo, ...

Recommended Posts

Bom Dia...Acabei de me registrar para os fóruns do iMasters, e gostaria muito de ajuda. Eu gostaria de saber porque quando crio um formulário simples em PHP (para que os dados preenchidos sejam enviados via e-mail para a pessoa que se cadastrou) usando a função MAIL para o envio dos dados, alguns servidores como HOTMAIL e YAHOO recebem esse e-mail como lixo eletrônico ou mensagem em massa, ou até mesmo nem recebem (no caso do YAHOO).Por favor, se alguem souber o porque isso acontece, ou uma forma de solucionar esse problema, por favor, me ajude!Grata até o momento, aguardo...Fabiana

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso acontece porque esses provedores e e-mail interpretam a mensagem como Spam.

 

Geralmente, a adição de cabeçalhos (header) soluciona parcialmente o problema, mas eu recomendo o uso da classe PHPMailer, eviando por SMTP, que causa menos problemas.

 

http://phpmailer.sourceforge.net

 

Abraços,

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fabiana, seja bem-vinda ao fórum http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Seu tópico foi movido (Artigos, Dicas... http://forum.imasters.com.br/public/style_emoticons/default/seta.gif PHP) por postar em local errado. Aproveitando, peço que leia as regras do fórum, para ter referência em novas postagens.

Bons estudos http://forum.imasters.com.br/public/style_emoticons/default/graduated.gif

 

[]s

Anderson Mello

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Fabiana, seja bem vinda ao nosso fórum.

 

Como você é nova vou mandar um script prontinho, pra te ajudar, mas não se acostuma viu?

 

<?function EnviaEmail($email, $em_nome, $em_para) {$mime_list = array("html"=>"text/html","htm"=>"text/html", "txt"=>"text/plain", "rtf"=>"text/enriched","csv"=>"text/tab-separated-values","css"=>"text/css","gif"=>"image/gif");$ABORT = FALSE;$boundary = "XYZ-" . date(dmyhms) . "-ZYX";$message .= " ";$message .= '<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Untitled Document</title></head><body>AQUI PODE SER HTML MESMO</body></html>';			$message .= $body;			$message .= "\r\n";						$headers = "MIME-Version: 1.0\r\n";			$headers .= "Content-type: text/html; text/css; charset=iso-8859-1\r\n";			$headers .= "X-Priority: * 3 			X-Priority: * 3 			X-MSMail-Priority: * Normal 			X-Mailer: * Microsoft Outlook Express 6.00.2800.1106 			X-MimeOLE: * Produced By Microsoft MimeOLE V6.00.2800.1106 			X-Virus-Scanned: * by AMaViS perl-11";			$headers .= "To: ".$em_nome." <".$em_para.">\r\n";			$headers .= "To: \r\n";			$headers .= "From: SEU SITE <".$email.">\r\n";			$mensagem=mail($email, 'Fale Conosco', $message, $headers,'-fSEUEMAIL@SEUSITE.com.br');			//O ULTIMO PARAMETRO É O QUE FAZ COM QUE OS SERVIDORES NÃO VEJAM SEU EMAIL COM SPAM, ANTES DO EMAIL COLOQUE O f VEJA MAIS NO MANULA DO PHP			header("Location: ../respostaemail.php");}EnviaEmail($emaildeenvio, $nome, $para);?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu utilizo ou a classe PEAR MAIL ou então envio e-mail utilizando o framework PHP2GO(www.php2go.com.br), mas sempre utilizo o envio de e-mail autenticados (SMTP) e não tenho problemas no envio de e-mails.Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Fabiana, seja bem vinda ao nosso fórum.Como você é nova vou mandar um script prontinho, pra te ajudar, mas não se acostuma viu?

<?function EnviaEmail($email, $em_nome, $em_para) {$mime_list = array("html"=>"text/html","htm"=>"text/html", "txt"=>"text/plain", "rtf"=>"text/enriched","csv"=>"text/tab-separated-values","css"=>"text/css","gif"=>"image/gif");$ABORT = FALSE;$boundary = "XYZ-" . date(dmyhms) . "-ZYX";$message .= " ";$message .= '<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Untitled Document</title></head><body>AQUI PODE SER HTML MESMO</body></html>';			$message .= $body;			$message .= "\r\n";						$headers = "MIME-Version: 1.0\r\n";			$headers .= "Content-type: text/html; text/css; charset=iso-8859-1\r\n";			$headers .= "X-Priority: * 3 			X-Priority: * 3 			X-MSMail-Priority: * Normal 			X-Mailer: * Microsoft Outlook Express 6.00.2800.1106 			X-MimeOLE: * Produced By Microsoft MimeOLE V6.00.2800.1106 			X-Virus-Scanned: * by AMaViS perl-11";			$headers .= "To: ".$em_nome." <".$em_para.">\r\n";			$headers .= "To: \r\n";			$headers .= "From: SEU SITE <".$email.">\r\n";			$mensagem=mail($email, 'Fale Conosco', $message, $headers,'-fSEUEMAIL@SEUSITE.com.br');			//O ULTIMO PARAMETRO É O QUE FAZ COM QUE OS SERVIDORES NÃO VEJAM SEU EMAIL COM SPAM, ANTES DO EMAIL COLOQUE O f VEJA MAIS NO MANULA DO PHP			header("Location: ../respostaemail.php");}EnviaEmail($emaildeenvio, $nome, $para);?>
ta aparecendo isso: Warning: mail() [function.mail]: SAFE MODE Restriction in effect. The fifth parameter is disabled in SAFE MODE=/alguem sabe pq?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só vou postar o código completo... assim axo que fica mais facil pra vcs tentarem me ajudar...Bom, eu peguei o código do Freedom, adaptei algumas coisas e executei, mas axo q fiz alguma coisa errada, pq nao tah funcionando .. rs. .. e eu tb naum manjo mto de php pra falar a verdade.Agredeço MTO, c vcs puderem me ajudar...obs.: a variável ver no final do código é para informar se o envio do email foi executado com sucesso, e retornar a resposta ao Flash, pois estou enviando as variáveis por um form no flash.Aguardo resposta. Vlw galera.o código:

 <?// recolho as variáveis que vem pelo formulário $n_destinatario = $HTTP_POST_VARS["n_destinatario"]; $e_destinatario = $HTTP_POST_VARS["e_destinatario"]; $n_remetente = $HTTP_POST_VARS["n_remetente"]; $e_remetente = $HTTP_POST_VARS["e_remetente"]; $assunto = $n_remetente . " lhe convida para tomar um chopp"; //aplico seu código, com a diferença que removi a função EnviaEmail(), deixando o código ser executado direto, e + algumas adaptações$mime_list = array("html"=>"text/html","htm"=>"text/html", "txt"=>"text/plain", "rtf"=>"text/enriched","csv"=>"text/tab-separated-values","css"=>"text/css","gif"=>"image/gif");$ABORT = FALSE;$boundary = "XYZ-" . date(dmyhms) . "-ZYX";$message .= " ";$message .= "	 <BODY bottomMargin=0 leftMargin=0 topMargin=10 rightMargin=0 marginheight='0' marginwidth='0'><TABLE height=422 cellSpacing=0 cellPadding=0 width=680 background='http://www.palmaonline.com.br/fundo_convite.jpg' border=0 align='center'>  <TBODY>  <TR>	<TD colSpan=2 height=10><IMG height=10 	  src='http://www.palmaonline.com.br/ponto.gif'   width=1></TD></TR>  <TR>	<TD width='30'><IMG height=1 	  src='http://www.palmaonline.com.br/ponto.gif' width=30></TD>	<TD width='384' align=middle vAlign=top><div align='left'>	  <p> </p>	  <p> </p>	  <p><FONT color='fdfa00' size='2' face=Verdana>Oi, <font color='#FFFFFF'>" . $n_destinatario . "</font>, <BR>			<br>			<BR>			<font color='#FFFFFF'>" . $n_remetente . "</font> falou que você não			é de negar fogo. Principalmente quando se trata de um<br>	   Chopp Brahma. Então: Vê se não vai furar, hoje às 15h ele vai estar te esperando na Palma.</FONT></p>	  <p><FONT face=Verdana size=1><BR>		</FONT></p>	</div>	  <p> </p>	  <p><br>	  </p>	  <p><a href='http://www.palmaonline.com.br/' target='_blank'><img src='http://www.palmaonline.com.br/ponto.gif' width='245' height='136' border='0'></a></p>	  </TD><TD width='266'><IMG height=1 	  src='http://www.palmaonline.com.br/ponto.gif' 	width=226></TD>  </TR></TBODY></TABLE><BR></BODY>";  	$message .= $body;	$message .= "\r\n";			$headers = "MIME-Version: 1.0\r\n";	$headers .= "Content-type: text/html; text/css; charset=iso-8859-1\r\n";	$headers .= "X-Priority: * 3 	X-Priority: * 3 	X-MSMail-Priority: * Normal 	X-Mailer: * Microsoft Outlook Express 6.00.2800.1106 	X-MimeOLE: * Produced By Microsoft MimeOLE V6.00.2800.1106 	X-Virus-Scanned: * by AMaViS perl-11";	$headers .= "From:".$e_remetente."\nReply-To:".$e_remetente."\n";//envia a mensagem 	 $ver = mail($e_destinatario, $assunto, $message, $headers,'-fPAULO@IDEIAIDEAL.com.br');		   // deveria colocar a variavel $e_remetente no ultimo campo? assim: [ '-f'.$e_remetente); ]	 //O ULTIMO PARAMETRO É O QUE FAZ COM QUE OS SERVIDORES NÃO VEJAM SEU EMAIL COM SPAM, ANTES DO EMAIL COLOQUE O f VEJA MAIS NO MANULA DO PHP	 	 //		  header("Location: ../respostaemail.php");		  << quê diabos eh isso?? xD	 	 echo "ver=$ver";?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Fabiana, seja bem vinda ao nosso fórum.Como você é nova vou mandar um script prontinho, pra te ajudar, mas não se acostuma viu?

<?function EnviaEmail($email, $em_nome, $em_para) {$mime_list = array("html"=>"text/html","htm"=>"text/html", "txt"=>"text/plain", "rtf"=>"text/enriched","csv"=>"text/tab-separated-values","css"=>"text/css","gif"=>"image/gif");$ABORT = FALSE;$boundary = "XYZ-" . date(dmyhms) . "-ZYX";$message .= " ";$message .= '<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Untitled Document</title></head><body>AQUI PODE SER HTML MESMO</body></html>';			$message .= $body;			$message .= "\r\n";						$headers = "MIME-Version: 1.0\r\n";			$headers .= "Content-type: text/html; text/css; charset=iso-8859-1\r\n";			$headers .= "X-Priority: * 3 			X-Priority: * 3 			X-MSMail-Priority: * Normal 			X-Mailer: * Microsoft Outlook Express 6.00.2800.1106 			X-MimeOLE: * Produced By Microsoft MimeOLE V6.00.2800.1106 			X-Virus-Scanned: * by AMaViS perl-11";			$headers .= "To: ".$em_nome." <".$em_para.">\r\n";			$headers .= "To: \r\n";			$headers .= "From: SEU SITE <".$email.">\r\n";			$mensagem=mail($email, 'Fale Conosco', $message, $headers,'-fSEUEMAIL@SEUSITE.com.br');			//O ULTIMO PARAMETRO É O QUE FAZ COM QUE OS SERVIDORES NÃO VEJAM SEU EMAIL COM SPAM, ANTES DO EMAIL COLOQUE O f VEJA MAIS NO MANULA DO PHP			header("Location: ../respostaemail.php");}EnviaEmail($emaildeenvio, $nome, $para);?>
Freedom,Aproveitando o tópico....Esse '-fseuemail@seusite.com.br' depois do 'headers' salvou a minha vida.Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pelo visto o meu problema é esse tal de SAFE MODE........ alguem poderia me dizer o que é isso?pq eu sempre recebo uma mensagem do tipo:Warning: mail() [function.mail]: SAFE MODE Restriction in effect. The fifth parameter is disabled in SAFE MODE.gostaria de saber como resolver isso.Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

pelo visto o meu problema é esse tal de SAFE MODE........ alguem poderia me dizer o que é isso?pq eu sempre recebo uma mensagem do tipo:Warning: mail() [function.mail]: SAFE MODE Restriction in effect. The fifth parameter is disabled in SAFE MODE.gostaria de saber como resolver isso.Obrigado

Está retornando que o 5 parametro não pode ser usado em modo seguro. Pode ser a versão do PHP ou algo restrito no teu server, fala com o pessoal da hospedagem que eles vão te dar um retorno.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara alguns servidores bloqueiam a função mail, esse parece ser teu caso, então tu tem que enviar e-mail autenticado, como se fosse enviado de um programa utilizando o SMTP do servidor, ai basta você utilizar os dados de uma conta de e-mail, você pode fazer isso utilizando a classe PEAR::MAIL é bem simples a sua utilização, não conheço outras classes que façam isso, a não como já te disse um framework, bom vou colocar abaixo um exemplo de código com a classe Mail

<?##---------------------------------------------------## Envio de Emails pelo SMTP Autênticado usando PEAR##---------------------------------------------------# Mais detalhes sobre o PEAR:# http://pear.php.net/## Mais detalhes sobre o PEAR Mail:# http://pear.php.net/manual/en/package.mail.mail-mime.php##---------------------------------------------------# Faz o include do PEAR Mail. O arquivo "Mail.php" deve estar dentro do mesmo diretorio onde se encontra a pasta "Mail".include ("../Mail.php");# E-mail de destino. Caso seja mais de um destino, crie um array de e-mails.# *OBRIGATÓRIO*$recipients = "email@dodestinatario.com.br";# Cabeçalho do e-mail.$headers['From'] = "Nome Rementente <nome@remetente.com.br>"; # O From é *OBRIGATÓRIO*... Nome <E-mail> remetente... $headers['To'] = $recipients; # E-mail de destino, neste exemplo está pegando o e-mail da variavel $recipients setada logo acima$headers['Subject'] = " Texto Assunto "; # Assunto do e-mail.# $headers[Reply-To] = "EMailDeResposta@DominioDeResposta.com"; #### Utilize esta opção caso deseje definir o e-mail de resposta# $headers[Errors-To] = "EMailDeRerornoDeERRO@DominioDeretornoDeErro.com"; #### Utilize esta opção caso deseje definir o e-mail de retorno em caso de erro# $headers[X-Priority] = 3; #### 1 UrgentMessage, 3 Normal #### Utilize esta opção caso deseje definir a prioridade do e-mail# Corpo da Mensagem. Conteudo do e-mail$body = " Texto da Mensagem ";# Parâmetros para o SMTP. *OBRIGATÓRIO*$params["debug"] = true; #utilizado para debugar o código$params['auth'] = true; # Define que o SMTP requer autenticação. SE FALSE, E O E-MAIL NÃO FOR VÁLIDO O SERVIDOR DESCARTA O E-MAIL.$params['host'] = 'smtp.servidor.com.br'; # Servidor SMTP ## use 'localhost' para servidor local, use ip ou nome de dominio para servidor remoto, geralmente não funciona com localhost então é melhor utilizar o mesmos dados que você utilizar no seu leito de e-mail(outlook, etc)$params['username'] = 'suporte@servidor.com.br'; # Usuário do SMTP$params['password'] = 'senhadoemail'; # Senha do usuário SMTP.# Define o método de envio! queremos smtp. *OBRIGATÓRIO*$mail_object =& Mail::factory('smtp', $params);# Envia o email. Se não ocorrer erro, retorna TRUE caso contrário, retorna um# objeto PEAR_Error. Para ler a mensagem de erro, use o método getMessage().$result = $mail_object->send($recipients, $headers, $body);# Verifica se o envio do e-mail foi bem sucedido e aplica os comandos.if (PEAR::IsError($result)){ # Caso retornar erro, executa a ação de erro, neste caso utilisa o método getMessage() para informar o erro. echo "ERRO ao tentar enviar o email. (" . $result->getMessage(). ")";}else{ # Caso enviar com sucesso, executa a ação de "envio completo". echo "Email enviado com sucesso!";}?>

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.