Ir para conteúdo

Arquivado

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

marra³

Inserir Mais Destinatários Com Virgula

Recommended Posts

Olá.Tenho um script de cartões virtuais pronto (http://marra.navegaweb.com.br/buffet/cartao). Tá tudo certo, entretanto tem um probleminha. Eu gostaria de fazer com que ele pudesse mandar não só pra um destinatario, mas pra varios separando o e-mail com virgula.Exemplo:

E-mail do Destinatario:joao@hoo.com, jose@boo.com, lucas@woo.com

Olhem o send com as funções do PHP:
<?php############################################### The mymail function is optional. It depends # on settings in your sendmail program, and if # you can get it to work, then bounced emails # go to the senders email, rather than to # "nobody@localhost, which is what will happen# with the standard PHP mail function. ##############################################function mymail($to, $subject, $message, $headers){$headerarray = explode("\n", $headers);foreach ($headerarray as $header) {	if (preg_match ("/^From:/", $header)) {		$fromarray = explode(": ",$header);		$from = $fromarray[1];		break;	}}	$mailer = popen ("/usr/sbin/sendmail -t -i -f$from","w"); fwrite ($mailer,"To: $to$headersSubject: $subject$message"); pclose ($mailer);return 1;}##############################################function validate_email ($address) {  return (ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.			   '@'.			   '[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.			   '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$',			   $address));}function checkemail($address){	if (!validate_email($address)) {	?>	<html><head><title>Invalid Email Address</title></head>	<body bgcolor=white>	<h3>Endereço de E-mail Inválido</h3>	<p>Desculpe, o seguinte endereço de e-mail: <font color=red><?php print $address ?></font>   é inválido.</p>	<form>	  <INPUT TYPE="button" VALUE="Voltar" onClick="history.back()">	</form>	</body></html>	<?php	exit;	}}checkemail($recipientemail);checkemail($recipientemail2);checkemail($recipientemail3);checkemail($senderemail);$message = stripslashes($message);$message = trim($message);$today = date("Ymd", mktime (0,0,0,date("m")  ,date("d") ,date("Y") ) );$messageid = $today * 10000;$messageid = $messageid + 1;while (file_exists("messages/$messageid")) {	$messageid = $messageid + 1;}$fp = fopen ("messages/$messageid", "w");fwrite($fp,$message);fclose($fp);$scriptbase = substr($PHP_SELF, 0, -9);$notification = "$sendername te enviou um Convite-Virtual!\n\n";$notification .= "Para ver seu convite, visite o endereço abaixo:\n";$notification .= "http://$SERVER_NAME$scriptbase/view.php?card=$cardtosend&message=$messageid\n\n";$notification .= "Se não conseguir clicar no endereço acima, apenas copie e cole-o na barra de endereços do seu navegador\n\n";$notification .= "Este convite foi enviado por algum aniversariante que contratou os serviços de Petit Gourmet - Buffet Infantil.";$result = mail($recipientemail,$recipientemail2,$recipientemail3,"Convite Virtual de $sendername",$notification,"From: $sendername <$senderemail>\nReply-To: $senderemail");if (!$result) {?><html><head><title>Problemas no Envio do E-mail</title></head><body bgcolor=white><h3>Problemas no E-mail</h3><p>Desculpe, houve um erro no e-mail. Volte e tente novamente.</p><form><INPUT TYPE="button" VALUE="Go Back" onClick="history.back()"></form></body></html><?phpexit;}include("./thanks.php");?>
Olhem o HTML, com os campos:
<font class="contentdesc">E-mail do Convidado:</font><br><input type="text" name="recipientemail" size="25"><br><br><font class="contentdesc">Seu nome inteiro:</font><br><input type="text" name="sendername" size="25"><br><br><font class="contentdesc">Your Email Address:</font><br><input type="text" name="senderemail" size="25"><br><br><font class="contentdesc">Coloque sua mensagem:</font><br><textarea name=message cols="19" rows="2" wrap="VIRTUAL"></textarea><br><input type=submit name=submit value="Preview"><br>
Vi na internet que a função mail(); aceita a separação por virgulas, entretanto ela nao funciona!Agradecido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, se eu colocar separado por vírgulas ele diz que o e-mail está escrito de forma errada.Será que se tirarmos a "validaçao" dos caracteres ou entao modificarmos o modo como ela esta no codigo os e-mails cheguem?Obrigado, espero ajuda!Marcell Marra

Compartilhar este post


Link para o post
Compartilhar em outros sites

é isso ae cara, o problema é devido a expressão regular que válida o e-mal, só isso, se tu bota uma virgula na parada, ele sempre ira retornar false na função validate_emailvou almoçar agora cara, mas assim que voltar, eu posto uma função regular que valide o e-mail da forma que você quer :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Void:, valeu mesmo cara.Por isso que eu me orgulho de estar aqui desde 2003 e nunca um moderador/admin me desapontar. Valeu mesmo!Tô no aguardo.Marcell Marra

Compartilhar este post


Link para o post
Compartilhar em outros sites

então nego, ER é realmente uma parada cabreira ... assombração de muitos programadores, minha assombração tb !!

Confesso que entendo bem pouco dessa parada, mas pelo que eu pude ver em http://guia-er.sourceforge.net/guia-er.html#toc2 é que o $ delimita o fim de um linha, então, se você tirar o $ ele funciona com e-mailx,e-maily,emailz.

Não sei se é o mais correto, mas sempre quando eu apanho de ER, eu leio esse guia rápido, da uma olhada no link que eu postei ae

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Void:,

 

o problema é que mesmo assim não funcionou http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

 

function validate_email ($address) {  return (ereg('^[-!#%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.			   '@'.			   '[-!#%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.			   '[-!#%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+', // REMOVIDO O "DOLAR"			   $address));}function checkemail($address){	if (!validate_email($address)) {	?>

Tire o 'sifrão' ou 'dólar' da ultima linhas mas assim mesmo ele ainda acusa o erro de "E-mail Inválido".

 

Será que se tirarmos toda a validação, incluindo de 'arroba' e tal, não daria certo?

 

O primodial pra mim é que o mesmo chegue nos destinatários!

 

http://www.marra.navegaweb.com.br/buffet/cartao/

faça o teste voce mesmo.

 

(y)

Compartilhar este post


Link para o post
Compartilhar em outros sites
function validate_emails($adress) {		 $arrEmails = explode(",",$adress);		 if (count($arrEmails)==0) return false;		 foreach($arrEmails as $email) {				 if (!preg_match("#^([A-Za-z0-9_-]+)@([A-Za-z0-9_-]+)\.([A-Za-z0-9\._-]+)$#",$email)) return false;		 }		 return true;}
Passa os e-mails separados por vírgula, se qualquer um deles estiver errado é retornado "false".

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.