Ir para conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

    0 membros, 0 visitantes, 0 membros anônimos

Foto
- - - - -

Inserir Mais Destinatários Com Virgula

  • Por favor, faça o login para responder
9 respostas neste tópico

#1 marra³

marra³
  • Members
  • 158 posts

Postado 25 setembro 2006 - 22:15

Olá. Tenho um script de cartões virtuais pronto (http://marra.navegaw...r/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&ccedil;o de E-mail Inv&aacute;lido</h3>	<p>Desculpe, o seguinte endere&ccedil;o de e-mail: <font color=red><?php print $address ?></font>   &eacute; inv&aacute;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.
  • 0

Publicidade

#2 Alisson Rodrigues

Alisson Rodrigues
  • Members
  • 1.769 posts

Postado 25 setembro 2006 - 23:27

Simplesmente não chega ou dá algum erro?
  • 0

#3 marra³

marra³
  • Members
  • 158 posts

Postado 26 setembro 2006 - 14:15

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
  • 0

#4 marra³

marra³
  • Members
  • 158 posts

Postado 27 setembro 2006 - 00:37

Seria essa a lógica?
  • 0

#5 Void :

Void :

    Mercenário's

  • Members
  • 1.290 posts

Postado 28 setembro 2006 - 13:43

é 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
  • 0

#6 marra³

marra³
  • Members
  • 158 posts

Postado 28 setembro 2006 - 14:25

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
  • 0

#7 Void :

Void :

    Mercenário's

  • Members
  • 1.290 posts

Postado 28 setembro 2006 - 14:59

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.sourc...ia-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
  • 0

#8 marra³

marra³
  • Members
  • 158 posts

Postado 28 setembro 2006 - 16:17

Valeu Void:, o problema é que mesmo assim não funcionou http://forum.imaster...tyle_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.nav.../buffet/cartao/ faça o teste voce mesmo. (y)
  • 0

#9 marra³

marra³
  • Members
  • 158 posts

Postado 29 setembro 2006 - 13:32

Inseri o caractere "," e de nada adiantou...Esse problema tá me matando.Breve suicidio!
  • 0

#10 Alisson Rodrigues

Alisson Rodrigues
  • Members
  • 1.769 posts

Postado 29 setembro 2006 - 14:30

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".
  • 0




Publicidade

/ins>