X-Amavis-Alert: SEÇÃO DO CABEÇALHO, erro MIME: erro: não foi possível analisar a cabeça;

1

eu recebo este erro: X-Amavis-Alert: BAD HEADER SECTION, erro MIME: erro: não foi possível analisar a cabeça; ao enviar um e-mail com um pdf anexado a um webmail roundcube, se eu enviar o mesmo e-mail para o gmail não tenho nenhum problema, meu código é:

$doc=new SimpleXmlElement($raw_response, LIBXML_NOCDATA);
$pdf=$doc->params->param->value->array->data->value->struct->member[0]->value->base64;
//echo   $pdf;
file_put_contents("pacte_actionnaire.pdf", base64_decode($pdf));

$to = '[email protected]';
$subject = 'Test';
$boundary = md5(uniqid(microtime(), TRUE));
$headers = "From: test <[email protected]>\r\nMime-Version: 1.0\r\nContent-Type: multipart/mixed;boundary=".$boundary."\r\n\r\n";
// Message
$msg = 'This is a multipart/mixed message.'."\r\n\r\n";
// Texte
$msg .= '--'.$boundary."\r\n";
$msg .= "Content-type:text/plain;charset=utf-8\r\n Content-transfer-encoding: 7bit\r\n\r\n";
$msg .= 'Un message avec une pièce jointe.'."\r\n";
// Pièce jointe
$file_name = 'pacte_actionnaire.pdf';
$file_type = filetype($file_name);
$file_size = filesize($file_name);

$handle = fopen($file_name, 'r') or die('File '.$file_name.'can t be open');
$content = fread($handle, $file_size);
$content = chunk_split(base64_encode($content));
$f=fclose($handle);
$msg .= '--'.$boundary."\r\n";
$msg .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
$msg .= 'Content-transfer-encoding:base64'."\r\n";
$msg .= $content."\r\n";
$msg .= '--'.$boundary."\r\n";
mail($to, $subject, $msg, $headers);

Para receber um documento em PDF de uma resposta xmlrpc e enviá-lo por e-mail, a mensagem de erro exata é:

X-Amavis-Alert: BAD HEADER SECTION, MIME error: error: couldn't parse head;
    error near:;
    JVBERi0xLjQNJeLjz9MNCjcgMCBvYmoNPDwvTGluZWFyaXplZCAxL0wgNjY4MzAvTyA5L0UgNjIx;
    NjkvTiAxL1QgNjY1MzkvSCBbIDQ5NSAxNjZdPj4NZW5kb2JqDSAgICAgICAgICAgICAgICAgICAg;
    DQoyOCAwIG9iag08PC9EZWNvZGVQYXJtczw8L0NvbHVtbnMgNC9Qc[...]

depois de error near:; é o pdf codificado em base64 então eu suponho que o erro vem da codificação pdf.

    
por user7832 04.07.2013 / 22:46

1 resposta

2

DEVE existir uma linha vazia antes do conteúdo:

$msg .= '--'.$boundary."\r\n";
$msg .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
$msg .= 'Content-transfer-encoding:base64'."**\r\n\r\n**";
$msg .= $content."\r\n";
$msg .= '--'.$boundary."\r\n";
    
por 21.01.2014 / 19:23