Ir para conteúdo

Arquivado

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

Thiago Duarte

upload de arquivo em anexo para email (phpmailer attach file)

Recommended Posts

Estou com dificuldade de fazer upload de arquivo para meu email.

É o seguinte, eu preciso que vá em ano para meu email, alguém pode me ajudar?

 

apareçe a seguinte mensagem

Could not access file: uploads/ SMTP Error: Could not connect to SMTP host. Não foi possível enviar a mensagem. SMTP Error: Could not connect to SMTP host.

<!doctype html>
<html>
   <head>
       <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
   </head>
   <body>
       <fieldset>
           <form action="" method="post" enctype="multipart/form-data">
               <label for="Arquivo">Arquivo:</label>
               <input type="file" name="arquivo" />
               <input type="submit" name="enviar" value="Enviar"/>
           </form>
       </fieldset>
<?php
require("class.phpmailer.php");	

$mail = new PHPMailer();	
$mail->IsSMTP(); // envia por SMTP
$mail->Host = "mail.stampdesign.com.br"; // SMTP servers
$mail->SMTPAuth = true;	// Caso o servidor SMTP precise de autenticação
$mail->Username = 'stampdes';	// nome de usuario
$mail->Password = '***';	// senha	 

$mail->From="thiago_db@hotmail.com"; // indica o e-mail do remetente.	
$mail->FromName="Upload mailer"; // indica o nome do remetente, ex: "Empresa X" . É opcional	
$mail->Sender="thiago_db@hotmail.com";	
$mail->AddReplyTo("thiago_db@hotmail.com", "Responsta do site");	 

$mail->AddAddress("thiago_db@hotmail.com"); // "email@seu_dominio.com"
$mail->Subject = "Arquivo em anexo"; // indica o título da mensagem
$mail->IsHTML(false);
$mail->AddAttachment('uploads/$file'); 
$mail->Body = "Por favor, encontre o arquivo para anexar."; // indica o corpo da mensagem que vamos enviar. Podemos usar texto ou o formato HTML.

if(!$mail->Send())
{
   echo "Não foi possível enviar a mensagem. " . $mail->ErrorInfo;;
}

else
{
   echo "A Mensagem foi enviada com sucesso!";
}

?>
   </body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O seu erro é de smtp

você está utilizando host , user e pass corretamente ?

 

Teste no lugar de

$mail->IsSMTP(); // envia por SMTP

$mail->Host = "mail.stampdesign.com.br"; // SMTP servers

$mail->SMTPAuth = true; // Caso o servidor SMTP precise de autenticação

$mail->Username = 'stampdes'; // nome de usuario

$mail->Password = '***'; // senha

 

a função isMail();

Compartilhar este post


Link para o post
Compartilhar em outros sites
<!doctype html>
<html>
   <head>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   </head>
   <body>
       <fieldset>
           <form method="post" enctype="multipart/form-data">
               <label for="anexo">
                   Anexo: <input type="file" name="file" />
                   <input type="submit" name="Enviar" value="Enviar" />
               </label>
           </form>
       </fieldset>
       <?php
             if( isset( $_POST[ 'Enviar' ] ) ){
               $arquivo = $_FILES[ 'file' ];
               $type = $arquivo[ 'type' ];
               $destinatario = '...';
               $assunto = 'Anexo de arquivos';
               $filename = sprintf( '%s.%s', md5(uniqid().time().$_FILES[ 'name' ]), pathinfo( $arquivo[ 'name' ], PATHINFO_EXTENSION ) );
               if( move_uploaded_file( $arquivo[ 'tmp_name' ], 'dir/'.$filename ) ){

                   $base64 = base64_encode( file_get_contents( 'dir/'.$filename ) );
                   $boundary = date("dmYhis");
                   $headers = implode ( "\n", Array( "MIME-Version: 1.0 ", 
                                                     "Content-Type: multipart/mixed; boundary=\"$boundary\" \r",
                                                     "$boundary " ) );
                   $conteudo = "--$boundary \n";    
                   $conteudo .= "Content-Type: text/html; charset=\"iso-8859-1\" \n";
                   $conteudo .= "Content-Transfer-Encoding: 8bits \n\n"; 
                   $conteudo .= "Envio de arquivos \r\n"; 
                   $conteudo .= "--$boundary \n";
                   $conteudo .= "Content-Type: $type; name=\"".$filename."\" \n"; 
                   $conteudo .= "Content-Transfer-Encoding: base64 \n"; 
                   $conteudo .= "Content-Disposition: attachment; filename=\"".$filename."\" \r\n" ; 
                   $conteudo .= "$base64 \n"; 
                   $conteudo .= "--$boundary \n"; 
                   unlink( 'dir/'.$filename );

                   if( mail( $destinatario, $assunto, $conteudo, $headers ) ){
                       echo 'Email Enviado com sucesso';
                   }else{
                       echo 'Falha no envio do email';
                   }
               }
             }
       ?>
   </body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só um comentário construtivo: alguém poderia criar um manual de uso da função mail. Essa é uma das funções mais temidas por mim (que evito usar) e creio que pela maioria...

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.