Ir para conteúdo

POWERED BY:

Arquivado

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

Enigma_Boy

[Resolvido] Enviar email com anexos a vários endereços

Recommended Posts

Olá meus amigos, saquei um código de uma maneira de enviar vários enaxos por email o problema é que o código da apenas para 1 email, ja tentei separar com (,) e com (;) mas nao da.. podem me dar uma luz.

 

<?php
/**
* Multi-Anexos | Multiple File Attachments
* @author Giovanni Ramos 
* @version 1.1 
* @since 2009-10-02 
* @license Copyleft - Use a vontade!
*
**/

$subm = $_POST['frm_ok'];	// Váriavel que indica que o formulário foi submetido
$name = $_POST['nome'];		// Nome do remetente(Emissor)
$mail = $_POST['email'];	// Segue o endereço de email do remetente

$__sj = "Formulário de Contato";	// Informe um assunto para a mensagem
$__to = "d-rm.net@live.com.pt"; 	// Defina o email do destinatário(Receptor), para mais de um separe-os com vírgula


// Verifico se o formulário foi submetido
if(isset($subm)):
// Descomente a linha abaixo, se você quiser analisar as variáveis que estão sendo passadas pelo formulário via post
//echo "<pre>",print_r($_POST),"</pre>";

// Filtro algumas váriaveis passadas
$find = "/(content-type|bcc:|cc:)/i";
if(preg_match($find, $name) || preg_match($find, $mail))
exit("<h3>Sem meta/header inclusões, por favor.</h3>");

// Valido o email do remetente, usando expressão regular
$regex = "^([[:alnum:]]+)([-._]([[:alnum:]]+))*[@]([[:alnum:]]+)([-._]([[:alnum:]]+))*[.]([[:alnum:]]){2}([[:alnum:]])?$";
if(isset($mail) && !ereg($regex, $mail))
$erro = 1;

// Mensagem formatada, enviada no corpo do email
$html = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
	<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"pt-BR\" lang=\"pt-BR\">
	<head>
	<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
	<style>
	body		{background:#FFFFFF;}
	a, a:link	{color:#5b6105; text-decoration:none;}
	#tab		{margin:0; padding:0px; width:500px; border:1px solid #8F8E96; padding:10px;}
	#tab tr 	{background:#F6F6F6; }
	#tab td 	{color:#000000; font: normal 11px arial, helvetica, sans-serif; border:dashed 1px #DDD; padding:30px;}
	</style>
	</head>
	<body>
	<br />
	<table border='0' cellspacing='10' cellpadding='0' id='tab' align='center'>
	<tr>
		<td>
		<b>Nome:</b> {$name}<br />
		<b>Email:</b> {$mail}<br />
		<b>Telefone:</b> {$_POST['telefone']}<br /><br />
		<b>Mensagem:</b> {$_POST['mensagem']}<br />
		</td>
	</tr>
	</table>
	<br />
	</body>
	</html>
";

// Resolvo a diferença de quebra de linhas, entre o Linux e o Windows
$snap = (PHP_OS == "Linux")?"\n":((PHP_OS == "WINNT")?"\r\n":exit());

// Verifico se o formulário postado, possui arquivos anexos
$file = (isset($_FILES["arquivo"]) && in_array("0",$_FILES["arquivo"]["error"]))?$_FILES["arquivo"]:FALSE;

// Executo a condição seguinte, se identificar um ou mais anexos junto a mensagem
if($file){

	// É removido da matriz os anexos falsos
	for($x=0; $x<count($_FILES["arquivo"]["name"]); $x++):
		if(empty($file['name'][$x])){ 
			unset($file['name'][$x]);
			unset($file['size'][$x]);
			unset($file['type'][$x]);
			unset($file['tmp_name'][$x]);
			unset($file['error'][$x]);
		}else{
			$attach[] = array(
				$file['name'][$x], 
				$file['size'][$x], 
				$file['type'][$x], 
				$file['tmp_name'][$x]
			);
		}
	endfor;

	$boundary = "==Multipart_Boundary_x".md5(time())."x";
	$body = stripslashes($html);

	// Criamos os cabeçalhos MIME utilizados para separar as partes da mensagem MIME 
	$html = "--".$boundary.$snap;
	$html.= "Content-Transfer-Encoding: 8bits".$snap;
	$html.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$snap.$snap;
	$html.= $body.$snap;
	$html.= "--".$boundary.$snap;

	for($i=0; $i<sizeof($attach); $i++):
		if(is_uploaded_file($attach[$i][3])){
			$Name = $attach[$i][0];
			$Size = $attach[$i][1];
			$Type = $attach[$i][2];
			$Temp = $attach[$i][3];

			if((strlen($Name)>1) && ($Size>0)){
				$fopen = fopen($Temp,"rb"); // Fazemos a leitura do arquivo a ser anexado em leitura binária(rb)
				$fread = fread($fopen, filesize($Temp));
				$cript = base64_encode($fread); // Codificamos o arquivo de dados com Base64 
				$close = fclose($fopen);
				$chunk = chunk_split($cript); // Convertemos a saída de base64_encode(), conforme semântica RFC 2045 

				$html.= "Content-Disposition: attachment; filename=\"{$Name}\"".$snap;
				$html.= "Content-Type: {$Type}; name=\"{$Name}\"".$snap;
				$html.= "Content-Transfer-Encoding: base64".$snap.$snap;
				$html.= $chunk.$snap;

				if(sizeof($attach) == $i+1) $html.= "--".$boundary."--".$snap;
				else $html.= "--".$boundary.$snap;
			}
		}
	endfor;

	// Adiciono os cabeçalhos de um arquivo anexado
	$head = "MIME-Version: 1.0".$snap; 
	$head.= "From: {$mail}".$snap; 
	$head.= "Content-type: multipart/mixed; boundary=\"{$boundary}\"".$snap; 
	$head.= $boundary.$snap;
}
// Caso contrário, enviamos uma mensagem html, sem anexos
else{
	$head = "MIME-Version: 1.0".$snap;
	$head.= "From: {$mail}".$snap;
	$head.= "Content-type: text/html; charset=\"ISO-8859-1\"".$snap;
}

endif;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Multi-Anexos</title>
<link href="_css/typo.css" rel="stylesheet" type="text/css" />
</head>


<body>
<div id="div">

<h1>Submetendo um formulário com múltiplos anexos</h1>	

<? 
// Se o formulário for enviado sem a presença do email do remetente, é exibido uma mensagem de retorno
if(isset($erro) && $erro==1): 
?>

	<div style='padding:10px;'>
		<a href='javascript:history.back(1)'>Clique aqui para retornar e informe um <b>email válido</b>!</a>
	</div>

<?
// Faço o envio da mensagem, se o formulário for submetido e passar no teste anterior
elseif(isset($subm)):
?>

	<div style='padding:10px;'>
		<?
		$msg1 = "<h2><b>Sua mensagem foi enviada com sucesso!</b></h2>";
		$msg2 = "<h2><b style='color:#e23b30;'>Sua mensagem não pôde ser enviada.</b><br /><br />Por favor tente novamente mais tarde.</h2>";
		$conf = @mail($__to, $__sj, $html, $head); 
		echo ($conf)?$msg1:$msg2;
		?>
		<br />
		<a href='javascript:history.back(1)'>Clique aqui para retornar!</a>
	</div>

<? 
// Exibe o formulário para preenchimento
else: 
?>

	<p>Preencha o formulário abaixo para enviar sua mensagem.<br />É necessário preencher todos os campos.</p>

	<form id="frm" action="<?=basename(__FILE__)?>" method="post" enctype="multipart/form-data">

		<input type="hidden" name="frm_ok" />

		<fieldset>
			<legend>Formulário de Contato</legend>
			<p>
				<label for="nome">Nome:</label>
				<input id="nome" name="nome" onKeyDown="if(event.keyCode==13) event.keyCode=9;" />
			</p>
			<p>
				<label for="email">E-Mail:</label>
				<input id="email" name="email" onKeyDown="if(event.keyCode==13) event.keyCode=9;" />
			</p>
			<p>
				<label for="telefone">Telefone:</label>
				<input id="telefone" name="telefone" onKeyDown="if(event.keyCode==13) event.keyCode=9;" />
			</p>
			<p>
				<label for="mensagem">Anexo #1:</label>
				<input type="file" name="arquivo[]" size="50" class="file" />
			</p>
			<p>
				<label for="mensagem">Anexo #2:</label>
				<input type="file" name="arquivo[]" size="50" class="file" />
			</p>
			<p>
				<label for="mensagem">Anexo #3:</label>
				<input type="file" name="arquivo[]" size="50" class="file" />
			</p><p>
				<label for="mensagem">Anexo #3:</label>
				<input type="file" name="arquivo[]" size="50" class="file" />
			</p><p>
				<label for="mensagem">Anexo #3:</label>
				<input type="file" name="arquivo[]" size="50" class="file" />
			</p><p>
				<label for="mensagem">Anexo #3:</label>
				<input type="file" name="arquivo[]" size="50" class="file" />
			</p><p>
				<label for="mensagem">Anexo #3:</label>
				<input type="file" name="arquivo[]" size="50" class="file" />
			</p><p>
				<label for="mensagem">Anexo #3:</label>
				<input type="file" name="arquivo[]" size="50" class="file" />
			</p><p>
				<label for="mensagem">Anexo #3:</label>
				<input type="file" name="arquivo[]" size="50" class="file" />
			</p><p>
				<label for="mensagem">Anexo #3:</label>
				<input type="file" name="arquivo[]" size="50" class="file" />
			</p>
			<p>
				<label for="mensagem">Mensagem:</label>
				<textarea id="mensagem" name="mensagem" class="text"></textarea>
			</p>
			<p style="text-align:right; padding-right:10px;">
				<input type="submit" value="ENVIAR" class="send" />
			</p>
		</fieldset>

	</form>

<? 
endif; 
?>

</div>
</body>
</html>

 

ja resolvi, peço desculpa pelo incomodo :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

No Linux, você pode definir o From das seguintes formas:

$headers .= "From: eu@seudominio.com\n";
$headers .= "From: Meu Nome <eu@seudominio.com>\n";

 

No Windows:

$headers .= "From: eu@seudominio.com\r\n";

 

$cc       = array( 'fulano@gmail.com', 'ciclano@hotmail.com', 'beltrano@yahoo.com' );
$headers .= sprintf( 'Cc: %s%s',  implode( ', ', $cc ), PHP_EOL );

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.