Jump to content


Photo

Enviar E-Mail Com Anexo (Atualizado!)


  • Faça o login para participar
96 replies to this topic

#61 tiagoseth

tiagoseth

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Não informado

Posted 05/07/2009, 18:07

Oi Pessoal...
Não quase nada de php, só de html e css e estou precisando montar um formulário com envio de anexo. Com as informações que me passaram aí em cima, não tenho idéia de como montar, será que teriam a manha de me explicar como faço isso?

Agradeço,
7

#62 georgewar

georgewar

    Let's upgrade myself

  • Usuários
  • 169 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro - RJ
  • Interesses:PHP - JavaScript

Posted 04/08/2009, 15:25

só um detalhe:

$message .= "Content-Transfer-Encoding: 8bits\n";
$message .= "Content-Type: text/plain; charset=\"ISO-8859-1\"\n\n";

o correto é:

$message .= "Content-Type: text/plain; charset=\"ISO-8859-1\"\n\n";
$message .= "Content-Transfer-Encoding: 8bit\n";

8bits <> 8bit

vejam:
http://www.zend.com/...eemailpart1.php

#63 Arckyz

Arckyz

    Normal

  • Usuários
  • 93 posts
  • Sexo:Não informado

Posted 13/08/2009, 16:21

COmo fasso para colocar mais anexos? tentei fazer isso:

$verifica_ext = true;
$c = 1;
$arq[1] = $anexo;
$arq[2] = $anexo2;
$arq[3] = $anexo3;
$arq[4] = $anexo4;
$arq[5] = $anexo5;
while ($c < 6){
$attachments[1] = $arq[$c];
foreach ($attachments as $key => $full_path) {
if ($full_path !='') {
	  if (file_exists($full_path)){
			if ($fp = fopen($full_path,"rb")) {
					$filename = array_pop(explode(chr(92),$full_path));
					$contents = fread($fp,filesize($full_path));
					$encoded = base64_encode($contents);
					$encoded_split = chunk_split($encoded);
					fclose($fp);
					$message .= "--$boundary\n";
					$message .= "Content-Type: $anexo_type\n";
					$message .= "Content-Disposition: attachment; filename=\"$anexo_name\" \n";
					$message .= "Content-Transfer-Encoding: base64\n\n";
					$message .= "$encoded_split\n";
					$extensao = substr($anexo_name,-4);
					if ($extensao != ".jpg" && $extensao != ".png" && $extensao != "jpeg" && $extensao != ".gif" && $anexo_name != ""){
					  $verifica_ext = false;	
					}
					
			}
			else {
			echo "Impossível abrir o arquivo$key: $filename";
			$ABORT = TRUE;
			}
	  }
	  else {
	  echo "O arquivo$key não existe: $filename";
	  $ABORT = TRUE;
	  }
}
}
$c++;
}


porém os arquivos vem todos com o mesmo nome e se eu colocar um arquivo q nao seja foto no 2º ou 3º anexo que nao seja foto ele nao percebe e envia do msm jeito

#64 Juliano Kamoi

Juliano Kamoi

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado

Posted 12/09/2009, 16:04

Paulo André, eu baixei o arquivo "anexo.php" que você postou, e sem modificar nada fiz o upload no servidor que hospedo meu site de testes, mas não deu certo. O formulário aparece direitinho, eu preencho tudo e quando envio, nada chega em minha caixa de e-mail. Será porque eu uso o "gmail"? Se for, o que devo fazer para que os arquivos enviados por esse formulário cheguem com sucesso em minha caixa de e-mails do gmail? Pode haver algum problema no servidor? Fico agradecido desde já!

#65 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 13/09/2009, 00:42

Olá Juliano!

Bom, esse script está um tanto quanto velho. :D

E na ocasião, revisando o código parece que foi feito com a idéia de que a diretiva register_globals do PHP está ativada, o que hoje em dia não é nada seguro.

Sendo assim, tente trocar as variáveis vindas do formulário passando a utilizar $_POST, como por exemplo $_POST['action'] no lugar de simplesmente $action e assim por diante.

Prometo que vou arrumar um tempo para atualizar este script. ;)

[]'sAté mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#66 Juliano Kamoi

Juliano Kamoi

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado

Posted 15/09/2009, 01:17

Paulo André, muito obrigado pela sua atenção! Poucos respondem à própria postagem em qualquer fórum que seja. Estou aqui denovo, pois fiz algumas modificações como vc havia me dito, porém, como sou iniciante, acredito que faltou modificar algo, pois quando envio, aparece a mensagem "O arquivo1 não existe: Mensagem enviada! " e chega à minha caixa de emails, somente o subject e a mensagem, uma vez que o anexo não chega. Já tentei de tudo, para ver se era o tipo do arquivo ou o tamanho, mas não é nenhum desses pontos. Por favor, contando mais uma vez com a sua ajuda e paciência, Peço que dê uma olhadinha abaixo, e veja o que faltou modificar... Mais uma vez Obrigado!

<?php
if ($_POST['action'] != "upload")
{


print '
<FORM METHOD="post"  ENCTYPE="multipart/form-data">
<INPUT TYPE="hidden" NAME="MAX_FILE_SIZE" VALUE="1000000">
<INPUT TYPE="hidden" NAME="action" VALUE="upload">
<TABLE BORDER="1">

  <TR>
   <TD>De: </TD>
   <TD><input type="text" name="from" size=40><BR></TD>
  </TR>

<TR>
   <TD>Para: </TD>
   <TD><input type="text" name="to" size=40><BR></TD>
  </TR

<TR>
   <TD>Assunto: </TD>
   <TD><input type="text" name="subject" size=40><BR></TD>
  </TR

<TR>
   <TD>Cc: </TD>
   <TD><input type="text" name="cc" size=40><BR></TD>
  </TR

<TR>
   <TD>Bcc: </TD>
   <TD><input type="text" name="bcc" size=40><BR></TD>
  </TR


  <TR>
   <TD>Mensagem: </TD>
   <TD><TEXTAREA NAME="body" ROWS="10" COLS="50"></TEXTAREA></TD>
  </TR>

  <TR>
   <TD>Anexo: </TD>
   <TD><INPUT TYPE="file" NAME="anexo"></TD>
  </TR>

  <TR>
   <TD COLSPAN="2"><INPUT TYPE="submit" VALUE="Enviar"></TD>
  </TR>
</TABLE>
</FORM>
';
}

if ($_POST['action'] == "upload")

{
$mime_list = array("html"=>"text/html","htm"=>"text/html", "txt"=>"text/plain", "rtf"=>"text/enriched","csv"=>"text/tab-separated-values","css"=>"text/css","gif"=>"image/gif");

$ABORT = FALSE;

$boundary = "XYZ-" . date(dmyhms) . "-ZYX";

$message = "--$boundary\n";
$message .= "Content-Transfer-Encoding: 8bits\n";
$message .= "Content-Type: text/plain; charset=\"ISO-8859-1\"\n\n";
$message .= $_POST['body'];
$message .= "\n";
$anexo = $_FILES['anexo'];
$attachments[1] = $anexo;

foreach ($attachments as $key => $full_path) {
if ($full_path !='') {
		   if (file_exists($full_path)){
						 if ($fp = fopen($full_path,"rb")) {
										 $filename = array_pop(explode(chr(92),$full_path));
										 $contents = fread($fp,filesize($full_path));
										 $encoded = base64_encode($contents);
										 $encoded_split = chunk_split($encoded);
										 fclose($fp);
										 $message .= "--$boundary\n";
										 $message .= "Content-Type: $anexo_type\n";
										 $message .= "Content-Disposition: attachment; filename=\"$anexo_name\" \n";
										 $message .= "Content-Transfer-Encoding: base64\n\n";
										 $message .= "$encoded_split\n";
						 }
						 else {
						 echo "Impossível abrir o arquivo$key: $filename";
						 $ABORT = TRUE;
						 }
		   }
		   else {
		   echo "O arquivo$key não existe: $filename";
		   $ABORT = TRUE;
		   }

}
}

$message .= "--$boundary--\r\n";

$headers = "MIME-Version: 1.0\n";
$headers .= "From: <$from>\r\n";
$headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"\r\n";


$mensagem=mail($_POST['to'], $_POST['subject'], $message, $headers);
if ($mensagem) {
		print "Mensagem enviada!";

} else {
		print "O envio da mensagem falhou!";
}

}
?>


#67 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 15/09/2009, 10:12

Juliano, como prometido eu atualizei e criei uma classe e sugiro que você a utilize, já está bem mais nos padrões atuais. ;)

É bastante simples a utilização como você pode ver no exemplo, basta ter um formulário e iniciar a classe definindo os parâmetros.

Qualquer dúvida basta postar. :)

[]'s (y)Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#68 Guilherme Venerato

Guilherme Venerato

    Normal

  • Usuários
  • 68 posts
  • Sexo:Masculino
  • Localidade:Presidente Prudente

Posted 24/09/2009, 15:57

nossa, valeu mesmo, estava precisnado muito disso hehehe

akele abraço!
Guilherme Venerato - Soluções para Web
http://www.guilhermevenerato.com

#69 Div

Div

    Novato no fórum

  • Usuários
  • 15 posts
  • Sexo:Não informado
  • Interesses:Contatos Profissionais

Posted 29/11/2009, 20:37

Bem legal seu script, mas eu quero que o formulário envie para o meu email e não que o usuário possa escolher para qual e-mail enviar. Tem como?
.::S.O.S. WebDesign::.
--//Helping link your world in the web\\--
Twitter: @soswebdesign
Orkut: http://www.orkut.com...669640926212584
FaceBook: http://www.facebook.com/?ref=home#!/profile.php?ref=profile&id=100001018360487

#70 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 30/11/2009, 08:20

No exemplo que eu dei no tópico, no lugar de $_POST['to'] você coloca seu e-mail e no formulário você retira o campo de destinatário.

[]'sAté mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#71 kklj

kklj

    12 Horas

  • Usuários
  • 135 posts
  • Sexo:Masculino
  • Localidade:juiz de fora

Posted 26/01/2010, 22:26

No exemplo que eu dei no tópico, no lugar de $_POST['to'] você coloca seu e-mail e no formulário você retira o campo de destinatário.

[]'s


amigos eu tentei aki porem deu esse erro
Warning: require(class/Mail_attach.php) [function.require]: failed to open stream: No such file or directory in /home/wwwtopt/public_html/antonio/form2.php on line 12

Warning: require(class/Mail_attach.php) [function.require]: failed to open stream: No such file or directory in /home/wwwtopt/public_html/antonio/form2.php on line 12

Fatal error: require() [function.require]: Failed opening required 'class/Mail_attach.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/wwwtopt/public_html/antonio/form2.php on line 12

o q pode ser?

obrigado

#72 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 27/01/2010, 05:46

Você fez o download do anexo? (ok2)

Ele é necessário, então feito isto você coloca em algum diretório ou mesmo junto do script que executa o envio.

[]'s (y) Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#73 kklj

kklj

    12 Horas

  • Usuários
  • 135 posts
  • Sexo:Masculino
  • Localidade:juiz de fora

Posted 27/01/2010, 22:47

Você fez o download do anexo? (ok2)

Ele é necessário, então feito isto você coloca em algum diretório ou mesmo junto do script que executa o envio.

[]'s (y)


pois é amigo eu fiz o download sim akele da classe, mas nao deu em nada, fala q enviou mas nao envia. sera q tenho q mexer em alguma coisa no site? tipo uma configuracao?

obrigado

#74 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 29/01/2010, 07:48

A mensagem:

failed to open stream


Quer dizer que não encontrou o arquivo da classe.

Mostre-nos como está sua estrutura de arquivo e um trecho do seu código para podermos dar uma analisada detalhada.

[]'sAté mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#75 Priscila Pereira Lima

Priscila Pereira Lima

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Feminino
  • Localidade:bh

Posted 01/02/2010, 12:22

Ola, gostaria se saber se tem como enviar arquivos zip, coloquei assim nos tipos dos arquivos:

// Array with allowed mime type of attachment files
private $mime_files = array(
"gif" => "image/gif",
"jpg" => "image/jpeg",
"png" => "image/png",
"cdr" => "image/cdr",
"zip" => "application/zip");

alguem pode me ajudar?

desde ja agradeço :)




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq