• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

ricardocoimbra

[Resolvido] Phpmailer

12 mensagens neste tópico

Duvida, no phpmailer alguem sabe como meter a fazer tipo um loading, enquanto ele faz a autentificação e envia as mensagens?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes fazer qq coisa como

mostrar o loading

$mail->send()

tirar o loading

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fiz assim mas não dá!

<?

if($_POST['submit']) {

echo'<img src="imagens/load.gif" width="48" height="48" />';

$msg = "Mensagem Teste";

require("class.phpmailer.php");

$mail = new PHPMailer();

$mail->IsSMTP();  // envia por SMTP

$mail->Host     = "mail.sapo.pt"; // SMTP servers

$mail->SMTPAuth = true;     // turn on SMTP authentication

$mail->Username = "email@site.com";  // SMTP username

$mail->Password = "xxxx"; // SMTP password

$mail->From     = "email@site.pt"; //  Email Remetente

$mail->FromName = "Destinatario"; // Nome Remetente

$mail->AddAddress("ricardo@sapo.pt","Ricardo"); // Mail do destinatario   

$mail->WordWrap = 50;                              // set word wrap

$mail->IsHTML(true);                               // send as HTML

$mail->Subject  =  "Titulo Mensagem";

$mail->Body     =  "$msg";

$mail->AltBody  =  "No Html";

$mail->Send();

echo"Mensagem Enviada";

}

?>

<form id="form1" name="form1" method="post" action="formulario.php">

<input type="submit" name="submit" id="submit" value="Enviar dados" />

</form>

Alguem me pode ajudar? é que nao consigo! Por enquanto ele faz a autentificação a colocar a imagem a fazer loading só depois de concluido desaparecer...

podes fazer qq coisa como

mostrar o loading

$mail->send()

tirar o loading

podes fazer qq coisa como

mostrar o loading

$mail->send()

tirar o loading

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não consegues fazer a imagem desaparecer depois de enviado o mail, é isso ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acontece é que a imagem só aparece mesmo depois de já ter enviado o email!

eu meto no codigo  ela a aparecer antes mas se exprimentares ele primeiro envia a mensagem e so depois aparece a imagem.

não consegues fazer a imagem desaparecer depois de enviado o mail, é isso ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aqui o problema é que estas a carregar uma pagina nova e mesmo que obrigues o php a enviar os dados para o browser como são poucos ele nao os mostra logo

dai dar a sensação de que ele mostra tudo ao mesmo tempo

a minha sugestão é que uses um iframe para simular isso


<script type="text/javascript">
    function do_submit(){
        document.getElementById('loader').style.display='block';
        document.getElementById('frm').style.display='none';

    }
</script>

<img id="loader" src="imagens/load.gif" style="display:none">

<form action="?submit=true" id="frm" target="ifr" method="post" onsubmit="do_submit()">

<input type="submit" > 
</form>

<iframe name="ifr" style="display:none"></iframe>



<?php


if($_GET['submit']=="true"){

    
   $msg = "Mensagem Teste";

    require("class.phpmailer.php");
    
    $mail = new PHPMailer();
    $mail->IsSMTP();  // envia por SMTP
    $mail->Host     = "mail.sapo.pt"; // SMTP servers
    $mail->SMTPAuth = true;     // turn on SMTP authentication
    $mail->Username = "email@site.com";  // SMTP username
    $mail->Password = "xxxx"; // SMTP password
    $mail->From     = "email@site.pt"; //  Email Remetente
    $mail->FromName = "Destinatario"; // Nome Remetente
    $mail->AddAddress("ricardo@sapo.pt","Ricardo"); // Mail do destinatario   
    $mail->WordWrap = 50;                              // set word wrap
    $mail->IsHTML(true);                               // send as HTML
    $mail->Subject  =  "Titulo Mensagem";
    $mail->Body     =  "$msg";
    $mail->AltBody  =  "No Html";
    if($mail->Send()){
        echo"Mensagem Enviada";
    }else{
        echo"Erro";
    }
    ?>
    <script type="text/javascript">
    	parent.document.getElementById('loader').style.display='none';
    </script>
<?php
} //if submit

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Consegui era como escreveste obrigado, Sven tenho só mais uma duvida :

<?

$msg1 = "Mensagem 1";

$msg2 = "Mensagem 2";

$mail = new PHPMailer();

$mail->IsSMTP(); // envia por SMTP

$mail->Host = "mail.sapo.pt"; // SMTP servers

$mail->SMTPAuth = true; // turn on SMTP authentication

$mail->Username = "email@email.com"; // SMTP username

$mail->Password = "xxxxx"; // SMTP password

$mail->From = "email@email.com"; // Email de quem envia

$mail->FromName = "Nomo Pessoa"; // Nome email de quem envia

$mail->AddAddress("nome@email.com","Ricardo Coimbra"); // email para destinatario

$mail->WordWrap = 50; // set word wrap

$mail->IsHTML(true); // send as HTML

$mail->Subject = "Titulo - Titulo Mensagem";

$mail->Body = "$msg";

$mail->AltBody = "Este email não contem HTML";

$mail->Send();

?>

Assim ele vai enviar a Mensagem 1 pra o email nome@email.com.

Mas eu queria que ele me enviase a Mensagem 2 pra outro email por exemplo pra email2@email.com como podia fazer? mas sem estara repetir o ciclo novamente senao iria terde fazer duas autentificações. Ou seja ao enviar as Mensagens enviava a o conteudo da mensagem1 pra um email e a mensagem2 pra outro email.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pode usar uma ligação persistente para manteres a ligação ao servidor

depois é enviar a mensagem nova

mas acho que tens que te autenticar novamente para enviar a mensage

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

um exemplo de como pode ser feito:

<?php

$mensagem[ 1 ] = "mensagem 1";
$mensagem[ 2 ] = "mensagem 2";
$email[ 1 ] = "endereco@email1.com";
$email[ 2 ] = "endereco@email2.com";
$email_nome[ 1 ] = "Nome email 1";
$email_nome[ 2 ] = "Nome email 2";

$mail = new PHPMailer();
$mail->IsSMTP(); // envia por SMTP
$mail->Host = "mail.sapo.pt"; // SMTP servers
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "email@email.com"; // SMTP username
$mail->Password = "xxxxx"; // SMTP password 
$mail->From = "email@email.com"; // Email de quem envia
$mail->FromName = "Nomo Pessoa"; // Nome email de quem envia
$mail->WordWrap = 50; // set word wrap
$mail->IsHTML(true); // send as HTML
$mail->AltBody = "Este email não contem HTML";


for( $i = 1; $i < 3; $i++) {
     $mail->AddAddress( $email[ $i ] , $email_nome[ $i ] ); // email para destinatario
     $mail->Subject = "Titulo - Titulo Mensagem";
     $mail->Body = $mensagem[ $i ];
     $mail->Send();
     $mail->ClearAllRecipients();
}

?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Embora aqui não seja essencial e funcionar como está mas é melhor usar o ClearAllRecipients em vez do ClearAddresses

pois o ClearAddresses só limpa o TO:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Embora aqui não seja essencial e funcionar como está mas é melhor usar o ClearAllRecipients em vez do ClearAddresses

pois o ClearAddresses só limpa o TO:

Para o exemplo que dei, não seria necessário. Mas concordo e já alterei...... fica mais "seguro".  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora