Ir para conteúdo

POWERED BY:

Arquivado

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

Scientist

E-mails chegando no span

Recommended Posts

Boa Tarde, estou enviando emails em formato HTML para todos os email do meu banco de dados (são aproximadamente 400) um por um com um laço for.

 

Ex: foreach ($emails as $e) mail ($e,....

 

 

O problema é que todos os emails chegam no SPAN quando faço isso, porém quando envio apenas para 1 pessoa chega normal na caixa de entrada. Como resolver isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize SMTP autenticado em vez da função mail do PHP.

 

A função mail geralmente utiliza o mesmo servidor web para disparar os e-mails, e esses geralmente estão em black lists.

 

Usando uma classe de SMTP como a PHP Mailer você irá usar os servidores de e-mail e não o servidor web.

 

Tutorial simples de como usar o PHPMailer: :seta: Clique aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou tentando usar o gmail pelo phpmailer mais da Erro de SMTP: Não foi possível conectar com o servidor SMTP..

 

Veja meu codigo

$mail = new PHPMailer();
                   $mail->IsSMTP();
                   $mail->SMTPAuth = true;
                   $mail->SMTPSecure = "ssl";
                   $mail->Host = "smtp.gmail.com";
                   $mail->Port = 465;
                   $mail->Username = "xxxxxxxxxx@gmail.com";
                   $mail->Password = "xxxxxxxxxxxx";
                   $mail->SetLanguage('br', 'phpmailer/language/');
                   $mail->AddAddress("xxxxxxxxxxxx@gmail.com");
                   $mail->IsHTML(true);
                   $mail->CharSet = 'utf-8';
////////////////////////////////////////////////
//DADOS DE ENVIO DO EMAIL
                   $mail->Subject = $assunto;
                   $mail->From = "xxxxxxxxxxxx@gmail.com";
                   $mail->FromName = "XXXXXXXXXXXX";


                   $mail->Body .= $msg;
                       $enviado = $mail->Send();

                       if ($enviado)
                           echo "enviado com sucesso <br />";
                       else
                           "houve erros <br />";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim, limpando os destinatários e anexos ao enviar e, caso não envie, uma mensagem explicando o porque de não ter enviado:

$mail = new PHPMailer();
                   $mail->IsSMTP();
                   $mail->SMTPAuth = true;
                   $mail->SMTPSecure = "ssl";
                   $mail->Host = "smtp.gmail.com";
                   $mail->Port = 465;
                   $mail->Username = "xxxxxxxxxx@gmail.com";
                   $mail->Password = "xxxxxxxxxxxx";
                   $mail->SetLanguage('br', 'phpmailer/language/');
                   $mail->AddAddress("xxxxxxxxxxxx@gmail.com");
                   $mail->IsHTML(true);
                   $mail->CharSet = 'utf-8';
////////////////////////////////////////////////
//DADOS DE ENVIO DO EMAIL
                   $mail->Subject = $assunto;
                   $mail->From = "xxxxxxxxxxxx@gmail.com";
                   $mail->FromName = "XXXXXXXXXXXX";


                   $mail->Body .= $msg;
                       $enviado = $mail->Send();

                           /* Limpar os campos de destino e anexos */
                           $mail->ClearAllRecipients();
                           $mail->ClearAttachments();

                       if ($enviado)
                           echo "enviado com sucesso <br />";
                       else
                           /* Exibindo os erros encontrados ao enviar */
                           "houve erros: ".$mail->ErrorInfo."\n";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Adicione essa linha:

$mail->SMTPAuth = true;

Em baixo dessa (pra ficar mais organizado):

$mail->Host = "smtp.gmail.com";

[Atualizado]

Mude a configuração do SMTP pata isto:

// Configuração de SMTP
$email->Host = "ssl://smtp.googlemail.com";
$email->SMTPAuth = true;
$email->SMTPDebug = true;
$email->Port     = 465;
$email->Username = "email@gmail.com";
$email->Password = "*********";

Compartilhar este post


Link para o post
Compartilhar em outros sites

perfeito funcionou amigo, agora assim. Eu estou usando o gmail como você deve estar percebendo, mas gostaria que o usuário recebesse o From de : suporte@meudominio.com.br e não do meu gmail

 

Opa, resolvido, só mudei no $email->From.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu testar se agora não vai mais chegar no span e já retorno. 1 seg

 

olha o erro que deu:

 

 

Fatal error: Maximum execution time of 30 seconds exceeded in

/home/xxxxx/public_html/admin/phpmailer/class.smtp.php on line 424

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na demora ao enviar, deu erro.

Coloque esse código no código. Vai demorar do mesmo jeito, mas não vai haver limite de tempo:

set_time_limit(0);

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.