Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera beleza? Estou pesquisando e quebrando a cabeça há algum tempo
Seguinte: Eu tenho uma página de "Indique" em que a pessoa entra, coloca seu email e nome e o da pessoa que ela quer e será enviado um e-mail personalizado com a indicação dessa pessoa...pois bem, eu consegui fazer todo o email, testei e estava pegando, até perceber algo:
Quando eu coloco 2 emails com domínios iguais (Ex: teste@hotmail.com e teste2@hotmail.com) ele não envia, e dá a mensagem "Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 we do not relay". Pesquisei sobre esse erro, inclusive por aqui mas não achei um motivo válido para isso acontecer. Alguém pode me ajudar?
Segue o código em php
<?
$end_do_site ="http://www.poltronasmassageadoras.com.br";
$nome_enviando = $_POST["seu_nome"];
$email_enviando = $_POST["seu_email"];
$nome_destinatario = $_POST["para_nome"];
$email_destinatario = $_POST["para_email"];
$assunto = "$nome_destinatario, recomendo o site";
$header = "MIME-Version: 1.0 \r\n";
$header .= "Content-type: text/html; charset=utf-8\r\n";
$header .= "From: \"{$nome_enviando}\" <{$email_enviando}> \r\n";
$mensagem .= "<font face='Arial' size=4 color= '#ff6c00'><b>Olá, $nome_destinatario</b></font><br><br>";
$mensagem .= "<font face='Arial' size=3 color= '#000000'><b>Seu amigo $nome_enviando visitou nosso site e recomenda sua visita</b></font><br>";
$mensagem .= "<font face='Arial' size=3 color= '#000000'><b>O Site Poltronas Massageadoras oferece os modelos Agata Touch e Agata Long Arm, consideradas Top de Linha do Mercado no mundo das massagens</b></font><br><br>";
$mensagem .= "<img src=\"http://poltronasmassageadoras.com.br/imagens/arte_email.jpg\"><br><br>";
$mensagem .= "<font face='Arial' size=3 color= '#000000'><b>Visite nosso site: <br><br></b></font>";
$mensagem .= "<font face='Arial' size=3 color= '#000000'><b><a href='http://www.poltronasmassageadoras.com.br'>http://www.poltronasmassageadoras.com.br</a><br><br>Muito obrigado.<br><br>Poltronas Massageadoras</b></font>";
$enviar = mail($email_destinatario, $assunto, $mensagem, $header);
if($enviar) {
echo "<script type='text/javascript'> alert('Contato Enviado com Sucesso!'); window.location.href='indique.html'; </script>";
}echo "<script type='text/javascript'> alert('Ocorreu algum erro ao enviar o formulário'); </script>";
}
?>Fala Vinícius, coloquei o seu Foreach aqui e o erro persiste. Outra coisa que vi que tava faltando era o Return Path...mas mesmo assim continua dando o erro do "SMTP we do not relay"
<?
$end_do_site ="http://www.poltronasmassageadoras.com.br";
$nome_enviando = $_POST["seu_nome"];
$email_enviando = $_POST["seu_email"];
$nome_destinatario = $_POST["para_nome"];
$email_destinatario = $_POST["para_email"];
$assunto = "$nome_destinatario, recomendo o site";
$header .= "MIME-Version: 1.0 \r\n";
$header .= "Content-type: text/html; charset=utf-8\r\n";
$header .= "From: \"{$nome_enviando}\" <{$email_enviando}> \r\n";
$header .= "Bcc: Massagear <mkt@montrealimports.com.br>\n";
$header .= "Return-Path: $email_enviando \r\n";
foreach($email_destinatario as $emails){
$mensagem .= "<font face='Arial' size=4 color= '#ff6c00'><b>Olá, $nome_destinatario</b></font><br><br>";
$mensagem .= "<font face='Arial' size=3 color= '#000000'><b>Seu amigo $nome_enviando visitou nosso site e recomenda sua visita</b></font><br>";
$mensagem .= "<font face='Arial' size=3 color= '#000000'><b>O Site Poltronas Massageadoras oferece os modelos Agata Touch e Agata Long Arm, consideradas Top de Linha do Mercado no mundo das massagens</b></font><br><br>";
$mensagem .= "<img src=\"http://poltronasmassageadoras.com.br/imagens/arte_email.jpg\"><br><br>";
$mensagem .= "<font face='Arial' size=3 color= '#000000'><b>Visite nosso site: <br><br></b></font>";
$mensagem .= "<font face='Arial' size=3 color= '#000000'><b><a href='http://www.poltronasmassageadoras.com.br'>http://www.poltronasmassageadoras.com.br</a><br><br>Muito obrigado.<br><br>Poltronas Massageadoras</b></font>";
$enviar = mail($email_destinatario, $assunto, $mensagem, $header);
if($enviar) {
echo "<script type='text/javascript'> alert('Contato Enviado com Sucesso!'); window.location.href='indique.html'; </script>";
}echo "<script type='text/javascript'> alert('Ocorreu algum erro ao enviar o formulário'); </script>";
}
}
?>agora eu vou tentar explicar melhor, o que acontece é o seguinte se você tem 2 emails possivelmente a sua variavel que guardar o email é um array com mais de 1 índice, ou seja,
$email = array(1 => 'email1@hotmail.com', 2 => 'email2@hotmail.com');
se você colocar simplesmente email para enviar vai dar erro então o foreach faz com que para cada email ele executa o que você determinar separadamente no caso é enviar o email.
aquele if enviar você pode tirar do foreach também ele esta prejudicando.
e ele retorna alguma linha especifica para o erro?
A Mensagem de erro que tá dando depois que eu coloquei esse foreach é
Warning: Invalid argument supplied for foreach() in E:\vhosts\poltronasmassageadoras.com.br\httpdocs\indique.php on line 16
que é exatamente onde inicia o for each
Tô meio perdido nessa instrução do foreach rs
então o que acontece que sia variavel email não é um array como você pretende passar mais de 1 email para essa variavel?
o que retorna essa variavel?
Eu não pretendia passar mais de 1 email pra essa variável, eu pretendia usar o campo digitado de quem indicou pra ser o enviador do formulário, ao invés de criar um formulário de contato em que eu defina algum email como enviador. Ele funciona como está agora, só falha nessa questão se eu usar 2 domínios iguais...ele parece que não autentica o envio e dá o erro.
E eu não tenho uma outra ideia de como desenvolver esse código, sou meio iniciante em php ainda. Mas valeu pela ajuda, vou tentar fuçar e se eu resolver eu coloco pra galera ver
eu estava entendendo errado o seu problema, agora entendendo melhor eu vou te auxiliar melhor, vamos lá.
de onde você recupera o email de quem esta enviando?
http://www.oficinadanet.com.br/artigo/640/formulario_de_email_em_php_com_resposta_automatica
tente dar uma olhada nisso
Então brother, pra explicar melhor vou te mostrar a página
É essa aqui:
http://poltronasmassageadoras.com.br/indique.html
A Pessoa chega, coloca o nome dela, o email dela...e aí coloca o nome da pessoa e o email da pessoa que ela quer enviar
Nisso vai entrar o php que eu fiz falando que essa pessoal tal indicou o site pra ela acessar e bla bla bla
Também acho que não fui muito claro, as vezes a gente coloca o código aqui e acha que todo mundo vai entender rs agradeço demais estar acompanhando o problema
Sobre o script que você me passou, eu fiz um teste aqui, muda o formulário e o problema continua...pelo erro estar persistindo mesmo trocando de código acho que deve ser alguma outra coisa no php que tá faltando configurar ou até mesmo algo no servidor desse site...porque olha, já revirei tudo o que podia revirar kk :ermm:
cara eu fiz umas alterações de acordo com seu formulário, veja se funciona.
<?php
$header .= "MIME-Version: 1.0 \r\n";
$header .= "Content-type: text/html; charset=utf-8\r\n";
$header .= "Bcc: Massagear <mkt@montrealimports.com.br>\n";
extract($_POST);
$mensagem = <<<HTML
<font face='Arial' size=4 color= '#ff6c00'><b>Olá, {$para_nome}</b></font><br><br>
<font face='Arial' size=3 color= '#000000'><b>Seu amigo {$seu_nome}_enviando visitou nosso site e recomenda sua visita</b></font><br>
<font face='Arial' size=3 color= '#000000'><b>O Site Poltronas Massageadoras oferece os modelos Agata Touch e Agata Long Arm, consideradas Top de Linha do Mercado no mundo das massagens</b></font><br><br>
<img src=\"http://poltronasmassageadoras.com.br/imagens/arte_email.jpg\"><br><br>
<font face='Arial' size=3 color= '#000000'><b>Visite nosso site: <br><br></b></font>
<font face='Arial' size=3 color= '#000000'><b><a href='http://www.poltronasmassageadoras.com.br'>http://www.poltronasmassageadoras.com.br</a><br><br>Muito obrigado.<br><br>Poltronas Massageadoras</b></font>
HTML;
//Envia o email para quem recebe a indicação do site.
$envia = mail($para_email,"{$seu_nome} recomenda o site www.poltronasmassageadoras.com.br", $mensagem, $header);
$mensagem2 = <<<HTML
<p>Aqui vai o seu texto para quem indicou o site</p>
HTML;
// Envia o email para queme esta recomendando.
$envia = mail($seu_email, "Sua recomendação para {$para_nome} foi enviada com sucesso", $mensagem2, $header);
if($envia){
echo "<script type='text/javascript'> alert('Contato Enviado com Sucesso!'); window.location.href='indique.html'; </script>";echo "<script type='text/javascript'> alert('Ocorreu algum erro ao enviar o formulário'); </script>";
}
?>
uma boa observação a se fazer é que a função mail não autêntica os emails e que ultimamente ela esta apresentando alguns erros o email pode não chegar e também a velocidade em que chega seu email é relativo ao servidor, Exemplo:
Se você tiver um plano básico da UOL pode demorar algumas horas até receber esses emails pois existem muitos outros sites no mesmo servidor executando muitas coisas ao mesmo tempo.
RESOLVIIIIIIIIIIII :clap: :clap:
Assim, o seu script me ajudou, pois deu um outro erro...que faltava no Header o campo From. Coloquei ele no seu script e ele retornou o erro antigo
Logo concluí que fiz cagada no campo Header. Como eu lembrei que tinha visto um vídeo que explicava que pra enviar email autenticado precisava ter um email do próprio domínio. Pra testar eu criei um email de webmaster desse site e coloquei lá.
E chegou certinho
Vou disponibilizar o código pra galera
<?
$end_do_site ="http://www.poltronasmassageadoras.com.br";
$nome_enviando = $_POST["seu_nome"];
$email_enviando = $_POST["seu_email"];
$nome_destinatario = $_POST["para_nome"];
$email_destinatario = $_POST["para_email"];
$assunto = "$nome_destinatario, recomendo o site";
$header .= "MIME-Version: 1.0 \r\n";
$header .= "Content-type: text/html; charset=utf-8\r\n";
$header .= "From: webmaster@poltronasmassageadoras.com.br \r\n";
$header .= "Bcc: Massagear <mkt@montrealimports.com.br>\n";
$header .= "Return-Path: webmaster@poltronasmassageadoras.com.br \r\n";
$mensagem .= "<font face='Arial' size=4 color= '#ff6c00'><b>Olá, $nome_destinatario</b></font><br><br>";
$mensagem .= "<font face='Arial' size=3 color= '#000000'><b>Seu amigo $nome_enviando visitou nosso site e recomenda sua visita</b></font><br>";
$mensagem .= "<font face='Arial' size=3 color= '#000000'><b>O Site Poltronas Massageadoras oferece os modelos Agata Touch e Agata Long Arm, consideradas Top de Linha do Mercado no mundo das massagens</b></font><br><br>";
$mensagem .= "<img src=\"http://poltronasmassageadoras.com.br/imagens/arte_email.jpg\"><br><br>";
$mensagem .= "<font face='Arial' size=3 color= '#000000'><b>Visite nosso site: <br><br></b></font>";
$mensagem .= "<font face='Arial' size=3 color= '#000000'><b><a href='http://www.poltronasmassageadoras.com.br'>http://www.poltronasmassageadoras.com.br</a><br><br>Muito obrigado.<br><br>Poltronas Massageadoras</b></font>";
$enviar = mail($email_destinatario, $assunto, $mensagem, $header);
if($enviar) {
echo "<script type='text/javascript'> alert('Contato Enviado com Sucesso!'); window.location.href='indique.html'; </script>";
}echo "<script type='text/javascript'> alert('Ocorreu algum erro ao enviar o formulário'); window.location.href='indique.html';</script>";
}
?>
Vinícius, muito obrigado pela ajuda. Foi de total importância. Espero poder ajudá-lo quando puder
Abraços!
Disponha, boa sorte com seus projetos...
cara esta faltando um foreach ai você tem que fazer assim
<?
else{