sábado, 29 de setembro de 2012

Função mail() PHP retorna true mas o email não chega ao destino

Passei por este problema no meu site: enviava um email pela função mail() do PHP que retornava verdadeiro, mas o email não chegava ao destino.

A Locaweb tem uma página falando só sobre a configuração desta função, mas apesar de seguir o que estava escrito por lá o email continuava não chegando. A solução é simples, embora nada óbvia: você precisa preencher o quinto parâmetro da função mail() com a string “-falgum_email_do_seu_dominio“.

Juntando a necessidade de preencher o quarto parâmetro com esta solução de acrescentar o quinto, o código fica mais ou menos assim:



  1. $email_remetente = "eu@seudominio.com";

  2. $headers = "MIME-Version: 1.1\n";

  3. $headers .= "Content-type: text/plain; charset=iso-8859-1\n"; // ou UTF-8, como queira

  4. $headers .= "From: $email_remetente\n"; // remetente

  5. $headers .= "Return-Path: $email_remetente\n"; // return-path

  6. $envio = mail("destinatario@algum-email.com", "Assunto", "Mensagem", $headers, "-f$email_remetente");




Outro problema é o endereço de resposta do email. Em formulários de contato de sites desejamos que, ao clicar em “responder” nos emails enviados, o nosso leitor de email automaticamente já responda para o usuário que fez o contato e que inseriu seu email no formulário. O jeito errado é simular que o remetente daquela mensagem foi o email do seu usuário (quando na verdade o email foi enviado pelo seu próprio site). O jeito certo é dizer que aquele email foi enviado por um endereço do seu dominio, mas que se deve responder para (Reply-To) outro endereço.

Resumindo o código ficaria assim:



  1. $email_remetente = "eu@seudominio.com";

  2. $headers = "MIME-Version: 1.1\n";

  3. $headers .= "Content-type: text/plain; charset=iso-8859-1\n";

  4. $headers .= "From: $email_remetente\n"; // remetente

  5. $headers .= "Return-Path: $email_remetente\n"; // return-path

  6. $headers .= "Reply-To: $email_usuario\n"; // Endereço (devidamente validado) que o seu usuário informou no contato

  7. $envio = mail("destinatario@algum-email.com", "Assunto", "Mensagem", $headers, "-f$email_remetente");




Os usuários de servidores Windows devem substituir o “\n” por “\r\n”.

O motivo do problema é o encapsulamento da mensagem feito pelo sendmail. No cabeçalho ele até informa o email certo (do seu domínio), mas se você não passa o quinto parâmetro, na “envelopagem” ele coloca um endereço estranho que é reconhecido como malicioso pelos servidores de email.

IMPORTANTE: o código acima não envia email nenhum pra ninguém. Você precisa preencher as variáveis com os valores corretos antes de usar. Parece óbvio mas recebo cada dúvida…

Fonte

quarta-feira, 19 de setembro de 2012

Como hospedar seu site grátis em um EC2 no Amazon por 12 meses

Olá pessoal, as vantagens do cloud são enormes e coma vinda da Amazon para o Brasil, fica mais fácil de inicial sua virtualização de servidores.

A Amazon oferece 12 meses grátis de uma instancia EC2 com 10Gb de espaço, na verdade é quase impossível vc ficar hospedado na amazon sem gastar nada, já que eles tem tanto recurso interessante que vc sempre acaba solicitando algo que é pago. Lembrando para fazer isso é necessário um cartão de crédito internacional, ou vc pode ardquirir o serviço pela Link Nacional.

Assista o vídeo em inglês com o procedimento de configuração:
[youtube http://www.youtube.com/watch?v=E78VKAPwmDM]

OU

[youtube http://www.youtube.com/watch?v=bBajLxeKqoY]

 

Fonte: http://www.linknacional.com.br/criar-site/2012/03/como-hospedar-seu-site-gratis-em-um-ec2-no-amazon-por-12-meses/