Error while sending message

Asked

Viewed 142 times

-1

I have a form (which was available on the server) for sending messages, and when doing a test to see if it would work, is returning me an error on the following line: if(mail($to, $assunto, $mensagem, $headers)).

Could someone help me in this solution? I will provide all the code for better understanding.

<?php

/* Valores recebidos do formulário  */
$arquivo = $_FILES['arquivo'];
$nome = $_POST['nome'];
$replyto = $_POST['replyto']; // Email que será respondido
$mensagem_form = $_POST['mensagem'];
$assunto = $_POST['assunto'];

/* Destinatário e remetente - EDITAR SOMENTE ESTE BLOCO DO CÓDIGO */
$to = "[email protected]";
$remetente = "[email protected]"; // Deve ser um email válido do domínio

/* Cabeçalho da mensagem  */
$boundary = "XYZ-" . date("dmYis") . "-ZYX";
$headers = "MIME-Version: 1.0\n";
$headers.= "From: $remetente\n";
$headers.= "Reply-To: $replyto\n";
$headers.= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";  
$headers.= "$boundary\n"; 

/* Layout da mensagem  */
$corpo_mensagem = " 
<br>Curriculo via site
<br>--------------------------------------------<br>
<br><strong>Nome:</strong> $nome
<br><strong>Email:</strong> $replyto
<br><strong>Assunto:</strong> $assunto
<br><strong>Mensagem:</strong> $mensagem_form
<br><br>--------------------------------------------
";

/* Função que codifica o anexo para poder ser enviado na mensagem  */
if(file_exists($arquivo["tmp_name"]) and !empty($arquivo)){

    $fp = fopen($_FILES["arquivo"]["tmp_name"],"rb"); // Abri o arquivo enviado.
 $anexo = fread($fp,filesize($_FILES["arquivo"]["tmp_name"])); // Le o arquivo aberto na linha anterior
 $anexo = base64_encode($anexo); // Codifica os dados com MIME para o e-mail 
 fclose($fp); // Fecha o arquivo aberto anteriormente
    $anexo = chunk_split($anexo); // Divide a variável do arquivo em pequenos pedaços para poder enviar
    $mensagem = "--$boundary\n"; // Nas linhas abaixo possuem os parâmetros de formatação e codificação, juntamente com a inclusão do arquivo anexado no corpo da mensagem
    $mensagem.= "Content-Transfer-Encoding: 8bits\n"; 
    $mensagem.= "Content-Type: text/html; charset=\"utf-8\"\n\n";
    $mensagem.= "$corpo_mensagem\n"; 
    $mensagem.= "--$boundary\n"; 
    $mensagem.= "Content-Type: ".$arquivo["type"]."\n";  
    $mensagem.= "Content-Disposition: attachment; filename=\"".$arquivo["name"]."\"\n";  
    $mensagem.= "Content-Transfer-Encoding: base64\n\n";  
    $mensagem.= "$anexo\n";  
    $mensagem.= "--$boundary--\r\n"; 
}
 else // Caso não tenha anexo
 {
 $mensagem = "--$boundary\n"; 
 $mensagem.= "Content-Transfer-Encoding: 8bits\n"; 
 $mensagem.= "Content-Type: text/html; charset=\"utf-8\"\n\n";
 $mensagem.= "$corpo_mensagem\n";
}

/* Função que envia a mensagem  */
if(mail($to, $assunto, $mensagem, $headers))
{
 echo "<br><br><center><b><font color='green'>Mensagem enviada com sucesso!";
} 
 else
 {
 echo "<br><br><center><b><font color='red'>Ocorreu um erro ao enviar a mensagem!";
}
?>
  • 1

    What is the error message?

  • Your error is in if, use the command: if(isset(mail($to, $subject, $message, $headers)))

  • Warning: mail(): SMTP server Sponse: 501 5.1.7 Bad Sender address syntax 221 2.7.0 Error: I can break Rules, Too. Goodbye. in D: web localuser domain www sends.php on line 61. An error occurred sending the message! In the case that line 61 is almost at the end of the file: if(mail($to, $subject, $message, $headers))

  • Try to replace your if the way I said, I believe that’s it

  • @Nicolaspereira made the change but unfortunately it did not work. He returned the following error still on this line: Fatal error: Cannot use isset() on the result of an Expression (you can use "null !== Expression" Instead) in D: web localuser domain www sends.php on line 61

  • OK, I’ll go over it and see what it can be

  • What is line 61 of your code?

  • "SMTP server Sponse: 501 5.1.7 Bad Sender address"

  • Line 61 is this below @Nicolaspereira: if(mail($to, $subject, $message, $headers))

Show 4 more comments

1 answer

-3

That worked for me!

If you think you are getting 5.1.x errors while trying to send SMTP emails, it may be that your mail server has the parameter strict_rfc821_envelopes = yes or adheres strictly to ESMTP protocols (RFC 5321) that require email addresses to be included <> as Try to: $to = "< [email protected] >"; $sender = "< [email protected] >"; //No space between signals

Browser other questions tagged

You are not signed in. Login or sign up in order to post.