Ir para conteúdo

POWERED BY:

Arquivado

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

Edu Lindenberg

[Resolvido] Erro ao enviar arquivo anexo - função mail()

Recommended Posts

Olá, estou tentando fazer com que a função mail() envie arquivos em anexo.

 

O código abaixo deveria funcionar, mas o seguinte erro me é apresentado:

 

PHP Warning: mail() [function.mail]: SMTP server response: 451 See http://pobox.com/~djb/docs/smtplf.html. in E:\home\legassessoria\web\teste2.php on line 34

 

Já tentei de tudo, mas não consegui achar o erro:

 

 

 

<?php 
$quebra_windows = "\r\r\n";
$quebra_linux ="\r\n";
$assunto="teste envio";
$destinatario="seuemail@dominio.com.br";

//exemplo de arquivo a ser enviado, pode ser qualquer tipo de arquivo
$arquivo="noticias.txt";

$enviodeanexo = "XYZ-" . date("dmYis") . "-ZYX"; 
if($fp = fopen($arquivo,'rb')){
  $mensagem = "--$enviodeanexo\n";
  $mensagem = "Content-Transfer-Encoding: 8bits\n";
  $mensagem .= "Content-Type: text/html; charset=\"ISO-8859-1\"\n\n"; 
  $mensagem .= "$mensagem\n";

  $anexo = fread($fp,filesize($arquivo));		   
  $anexo = base64_encode($anexo); 
  fclose($fp);
  $anexo = chunk_split($anexo);

  $mensagem .= "Content-Disposition: attachment; filename=". basename($arquivo).$quebra_windows;
  $mensagem .= "Content-Type: ".filetype($arquivo)."; name=".basename($arquivo).$quebra_windows;
 
  $mensagem .= "Content-Transfer-Encoding: base64".$quebra_windows;
  $mensagem .= "$anexo\n"; 


								$headers = "MIME-Version: 1.1".$quebra_windows;
								$headers .= "Content-type: text/html; charset=iso-8859-1".$quebra_windows;
					
								$headers .= "From: email@dominio.com.br".$quebra_windows; // remetente
								$headers .= "Return-Path: email@dominio.com.br".$quebra_windows;// return-path
								$headers .= "Reply-To: email@dominio.com.br".$quebra_windows;
								
								
 if (mail($destinatario,$assunto,$mensagem,$headers)) 

  echo "Enviado com Sucesso!";
}
?>

 

 

 

 

 

o seguinte exemplo funciona direitinho, só que o arquivo (neste caso imagem) vai no corpo do email, e eu não quero isto, quero que o usuário abra o arquivo no attachments

 

$quebra_windows = "\r\r\n";
$quebra_linux ="\r\n";
$destino = $linha->Email;
								
$assunto = "Nova genha gerada";
$mensagem = "<html><head><link href='http://www.seudomigio.com.br/css/estilos.css' rel='stylesheet' type='text/css'></head><body>";
$mensagem .= "<div align='center'><table width = '800px' background='http://www.seudominio.com.br/img/background_fundo_email.jpg'><tr><td class='texto_calendario' colspan='3'>";
$mensagem .= "<img src=\"http://www.seudominio.com.br/img/logo_branco.jpg\"><br><br>";
$mensagem .= "Olá ".$linha->Nome.",<br><br>".$quebra_windows.$quebra_windows." seu login é: <b>".$login."</b> ,e sua nova senha agora é: <b>".$nova_senha."</b><br><br>".$quebra_windows.$quebra_windows;
$mensagem .= "Lembre-se de alterá-la para sua segurança!<br><br>".$quebra_windows.$quebra_windows;
$mensagem .= "___________________________________________________________________________
____________<br><br>";

$mensagem .= "Atenciosamente,<br>".$quebra_windows."  <b>EQUIPE </b><br>".$quebra_windows;
$mensagem .= "<a href='http://www.seudominio.com.br/sistema_cadastro' title='Clique aqui para ir até a página exclusiva dos alunos>Área exclusiva Alunos </a><br><br>".$quebra_windows;
$mensagem .= "</td></tr><tr> 
<td width='33%' class='rodape'> <p>assessoria<br>
	TEL.: (31) </p></td>
<td width='33%' class='rodape'><div align='center'>Av. <br>
  Mangabeiras -<br>
	</div></td>
 <td width='33%' class='rodape'>
	<div align='right'>Site desenvovido por:<br>
	<a title='Entre em contato com o desenvolvedor' href='mailto:meuemail@dominio.com'> EDUARDO </a></div></td>
</tr></table></div>";
$mensagem .= "</body></html>";
								
$headers = "MIME-Version: 1.1".$quebra_windows;
$headers .= "Content-type: text/html; charset=iso-8859-1".$quebra_windows;
$headers .= "From: remetente@dominio.com.br".$quebra_windows; // remetente
$headers .= "Return-Path: remetente@dominio.com.br".$quebra_windows;// return-path
$headers .= "Reply-To: remetente@dominio.com.br".$quebra_windows;;
							
if (mail($destino, $assunto, $mensagem, $headers))
   echo "sucess";

 

Alguém me ajuda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP Warning: mail() [function.mail]: SMTP server response: 451 See http://pobox.com/~djb/docs/smtplf.html. in E:\home\legassessoria\web\teste2.php on line 34

 

Já tentei de tudo, mas não consegui achar o erro:

 

$quebra_windows = "\r\r\n";

Alguém me ajuda?

Teu erro está ai, o link que você recebeu no erro, você leu ??

 

What is a bare LF, anyway?

It is an ASCII linefeed (LF) character not preceded by an ASCII carriage-return (CR) character.

Tente mudar aquela linha por:

 

$quebra_windows = "\r\n";

Compartilhar este post


Link para o post
Compartilhar em outros sites

não sei se o erro seria este, pois como eu disse no segundo código o email funciona normalmente, só que no primeiro caso ele dá aquele erro do link.

 

 

Mudei uma coisa aqui e um email foi enviado, mas com o seguinte resultado:

 

 

--XYZ-100720092636-ZYX Content-Transfer-Encoding: 8bits Content-Type: text/html; charset='iso-8859-1' --XYZ-100720092636-ZYX Content-Transfer-Encoding: 8bits Content-Type: text/html; charset='iso-8859-1' Content-Disposition: attachment; filename=noticias.txt Content-Type: file; name=noticias.txt Content-Transfer-Encoding: base64 Jm5vdGljaWFzPTxiPjxmb250IGNvbG9yPSIjY2MwMDAwIj5UcmVpbuNvIGRlIHRpcm88L2ZvbnQ+ PC9iPjxicj4gVG9kYSB0ZXLnYS1mZWlyYTxicj4gTG9jYWw6IExhZ29hIFNlY2EsIEJlbHZlZGVy ZTxicj4gSG9y4XJpbzogMTk6MzAg4HMgMjE6MDA8YnI+IFRyZWluYWRvcjogRmxhdmluaG8NCjxi Pjxmb250IGNvbG9yPSIjY2MwMDAwIj5JbnNjcmnn9WVzIEFiZXJ0YXMgbmEgTGVnPC9mb250Pjwv Yj48YnI+IERpYW1vbmQgUnVuIFRyYWNrIEZpZWxkIDZrPGJyPiBDaXJjdWl0byBBZGlkYXMgSW52 ZXJubzxicj4gQ2lyY3VpdG8gRmlsYSBOaWdodCBSdW4gQkg8YnI+IE1laWEtbWFyYXRvbmEgZG8g Umlv

 

no código

if($fp = fopen($arquivo,'rb')){

retirei mudei de 'rb' para 'b' e ficou assim

 

if($fp = fopen($arquivo,'r')){

 

e o resultado foi o envio do email mas com o formato acima...

 

continua sem o arquivo ir anexado

Compartilhar este post


Link para o post
Compartilhar em outros sites

RESOLVI O PROLBEMA

 

 

Mudei o código, agora estou usando algo parecido como:

 

<?php 
$imagem_nome="close.gif";
$arquivo=fopen($imagem_nome,'r');
$contents = fread($arquivo, filesize($imagem_nome));
$encoded_attach = chunk_split(base64_encode($contents));
fclose($arquivo);
$limitador = "_=======". date('YmdHms'). time() . "=======_";

$quebra_windows= "\r\n";

$mailheaders = "MIME-Version: 1.1".$quebra_windows;
//$mailheaders = "Content-type: multipart/mixed; charset=iso-8859-1".$quebra_windows;
$mailheaders .= "From: atendimento@dominio.com.br".$quebra_windows; // remetente
//$mailheaders .= "Return-Path: atendimento@dominio.com.br".$quebra_windows;// return-path
//$mailheaders .= "Reply-To: atendimento@dominio.com.br".$quebra_windows;
$mailheaders .= "Content-type: multipart/related; boundary=\"$limitador\"\r\n";
$cid = date('YmdHms').'.'.time();

$texto="
<html>
<body>
<img src=\"cid:$cid\">
<font size=6><br />blablabla </font>
</body>
</html>
";

$msg_body = "--$limitador\r\n";
$msg_body .= "Content-type: text/html; charset=iso-8859-1\r\n";
$msg_body .= "$texto\r\n";
$msg_body .= "--$limitador\r\n";
$msg_body .= "Content-type: image/jpeg; name=\"$imagem_nome\"\r\n";
$msg_body .= "Content-Transfer-Encoding: base64\r\n";
$msg_body .= "Content-ID: <$cid>\r\n";
$msg_body .= "$encoded_attach\r\n";
$msg_body .= "--$limitador--\r\n";
//echo $mailheaders; exit;
if (mail("email@hotmail.com","Assunto",$msg_body, $mailheaders)) echo "sucesso"; else echo "erro";

?>

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.