marra³ 0 Denunciar post Postado Setembro 26, 2006 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.comOlhem 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
Alisson Rodrigues 3 Denunciar post Postado Setembro 26, 2006 Simplesmente não chega ou dá algum erro? Compartilhar este post Link para o post Compartilhar em outros sites
marra³ 0 Denunciar post Postado Setembro 26, 2006 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
marra³ 0 Denunciar post Postado Setembro 27, 2006 Seria essa a lógica? Compartilhar este post Link para o post Compartilhar em outros sites
Void : 0 Denunciar post Postado Setembro 28, 2006 é 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
marra³ 0 Denunciar post Postado Setembro 28, 2006 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
Void : 0 Denunciar post Postado Setembro 28, 2006 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
marra³ 0 Denunciar post Postado Setembro 28, 2006 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
marra³ 0 Denunciar post Postado Setembro 29, 2006 Inseri o caractere "," e de nada adiantou...Esse problema tá me matando.Breve suicidio! Compartilhar este post Link para o post Compartilhar em outros sites
Alisson Rodrigues 3 Denunciar post Postado Setembro 29, 2006 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