phpmailer - o seguinte erro SMTP: dados não aceites

Estou a tentar resolver este problema durante 6 horas. Mas não há nada que faça sentido. Aqui está o cenário; há um modelo bem formatado HTML.

$mail_body = '
    <b>Message Num :</b> 769<br />
    <b>Message Date :</b> 2013-04-08 09:03:21<br />
    <b>Name :</b> John Doe<br />
    <b>Phone :</b> 123456789<br />
    <b>E-mail :</b> [email protected]<br />
    <b>Message :</b> Here is the message info<br />
';

aqui está a lista de E-mails dos destinatários;

$recipients = array("[email protected]","[email protected]");
Tudo parece bem e está pronto para enviar um e-mail.Aqui está a configuração do phpmailer;

$mail = new PHPMailer(); 
$mail->IsSMTP();
$mail->From = "[email protected]"; 
$mail->FromName = "TEST";
$mail->WordWrap = 50;

foreach($recipients as $mail_add) {
    $mail->AddAddress($mail_add);
}
$mail->IsHTML(true);
$mail->Subject = "TEST Subject";
$mail->Body = $mail_body;
if(!$mail->Send()) {
    echo $mail->ErrorInfo;
} else { 
        echo "Mail sent...";
}
Tudo é igual quando o Testo. Mas às vezes o e-mail era enviado. Às vezes não era enviado. Dê-me o seguinte erro : The following SMTP Error: Data not accepted.

Espero ter explicado.
Author: Yasin Yörük, 2013-04-08

9 answers

O seu servidor não permite um remetente e um utilizador diferentes você deve config: $mail->From como $mail->Username

 34
Author: css.cutter, 2014-01-02 17:11:36

Para os utilizadores do AWS que trabalham com o Amazon SES em conjunto com o PHPMailer, este erro também aparece quando o remetente de "from" não é um remetente verificado.

Para adicionar um remetente verificado:

1.) Entre na sua consola Amazon AWS: https://console.aws.amazon.com

2.) Seleccione "Amazon SES" da sua lista de aplicações AWS disponíveis

3.) Seleccione, em "remetentes verificados", os "endereços de E-Mail" -- > "verificar um novo endereço de E-mail"

4.) Navegar o e-mail do novo remetente, clique no link do E-mail de confirmação.

E está tudo pronto.
 6
Author: Jonathan LeRoux, 2014-08-29 01:21:52
Curiosamente, eu tinha o mesmo problema e para mim o problema era que a minha ligação estava a cronometrar. Para poder ver mais detalhes sobre as minhas ligações, adicionei $mail->SMTPDebug = 4; ao meu phpmailer (veja como capturar a depuração, dado que a função de saída por omissão é echo). Eis o resultado:
SMTP -> get_lines(): $data was ""
SMTP -> get_lines(): $str is ""
SMTP -> get_lines(): $data is ""
SMTP -> get_lines(): timed-out (10 seconds)
SMTP -> FROM SERVER:
SMTP -> ERROR: DATA not accepted from server: 

O tempo-limite por omissão é de 10 segundos. Se a sua aplicação conseguir suportar mais, adicione esta linha ao seu phpmailer:

$mail->Timeout = 20;
 6
Author: phoenix, 2017-03-08 16:22:47

Sobre uma determinada mensagem de tamanho, ele confunde o conteúdo ao configurar através de $mail - > Body.

Você pode testá-lo, se ele funciona bem com mensagens pequenas, mas não funciona com maior (mais de 4-6 kB), então este é o problema.

Parece ser o problema do '$ mail->Body', para que possa contornar isto, definindo manualmente o corpo HTML através de $mail - >MsgHTML ($message). E então você pode tentar apenas adicionar o corpo não-html por $mail- > AltBody.

Espero poder ajudar, sentir-me livre. para fornecer mais detalhes, informações.
 4
Author: Adam Szabo, 2014-03-02 23:16:40

Configure o phpmailer para funcionar na depuração para ver o erro "real" por detrás da mensagem genérica 'erro SMTP: dados não aceites' no nosso caso o texto na mensagem estava a activar o filtro de spam do servidor de smtp.

  $email->SMTPDebug = true;
 2
Author: zzapper, 2016-02-04 09:46:42

Tente definir a porta em 26, isto resolveu o meu problema com a mensagem "dados não aceitos".

 1
Author: Matteo, 2014-12-05 15:06:57
Estava a passar pelo mesmo problema. No meu caso, o envio de E-mail estava a cronometrar porque o meu servidor de troca estava a enviar e-mail para um servidor na internet. Aquele servidor excedeu a quota de largura de banda. Aparentemente o mapeador php tem algum tempo construído e não foi o suficiente para ver a mensagem real.
 0
Author: geekinit, 2013-11-19 02:50:17

Enviamos e-mail através dos servidores SMTP do Gmail, e obtemos este erro exacto do PHPMailer, por vezes quando atingimos os nossos limites de envio do Gmail.

Você pode verificar se é a mesma coisa que está acontecendo com você indo para o Gmail e tentando enviar manualmente um e-mail. No nosso caso que mostra a mensagem de erro mais útil sobre o envio de limites.

Https://support.google.com/a/answer/166852?hl=en

 0
Author: brismuth, 2017-07-18 06:08:53

Eu estava a usar apenas

$mail->Body    = $message;

E para algumas formas summitadas o PHP estava a devolver o erro:

Erro de SMTP: dados não aceites.Erro do servidor de SMTP: o comando de fim de dados falhou o detalhe: esta mensagem foi classificada como lixo e não pode ser entregue Código SMTP: 550

Arranjei-o adicionando este código depois de $mail - > Body=$message:

$mail->MsgHTML = $message;
$mail->AltBody = $message;
 0
Author: André A., 2018-03-22 17:00:35