Ir para o conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

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

Cursos Online iMasters
Foto:

Inserir Mais Destinatários Com Virgula

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

#1 marra³

marra³
  • Membros
  • 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
$headers
Subject: $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>
<?php
exit;
}
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

#2 Alisson Rodrigues

Alisson Rodrigues
  • Membros
  • 1.769 posts

Postado 25 setembro 2006 - 23:27

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

#3 marra³

marra³
  • Membros
  • 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³
  • Membros
  • 158 posts

Postado 27 setembro 2006 - 00:37

Seria essa a lógica?
  • 0

#5 Void :

Void :

    Mercenário's

  • Membros
  • 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_email
vou 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³
  • Membros
  • 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

  • Membros
  • 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³
  • Membros
  • 158 posts

Postado 28 setembro 2006 - 16:17

Valeu Void:,

o problema é que mesmo assim não funcionou :upset:

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³
  • Membros
  • 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
  • Membros
  • 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>