swiftmailer plugin logger

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : swiftmailer plugin logger

Re: swiftmailer plugin logger

par pitu69 » 03 juil. 2012, 10:36

Bonjour,

Quelqu’un a-t'il une idée sur la manière dont je devrais m'y prendre?

Ou dois je reposter ce message dans une autre section du forum? la section Frameworks PHP peut-être?

A bientôt.

Re: swiftmailer plugin logger

par pitu69 » 29 juin 2012, 10:34

Salut xTG,

Merci de t’être penché sur mon cas.

Oui je reçois bien les mails.

Sur la doc de swiftmailer, pour l'utilisation du plugin logger, le code doit être:
require_once 'lib/swift_required.php';

// Create the Mailer using any Transport
$mailer = Swift_Mailer::newInstance(
 Swift_SmtpTransport::newInstance('smtp.example.org', 25)
);

// To use the ArrayLogger
$logger = new Swift_Plugins_Loggers_ArrayLogger();
$mailer->registerPlugin(new Swift_Plugins_LoggerPlugin($logger));

// Or to use the Echo Logger
$logger = new Swift_Plugins_Loggers_EchoLogger();
$mailer->registerPlugin(new Swift_Plugins_LoggerPlugin($logger));

// Continue sending as normal
for ($lotsOfRecipients as $recipient) {
 ...

 $mailer->send( ... );
}

// Dump the log contents
// NOTE: The EchoLogger dumps in realtime so dump() does nothing for it
echo $logger->dump();
Je ne sais pas si cela peut venir de la fin de mon code. En effet pour envoyez les mails il faut:
for ($lotsOfRecipients as $recipient) {
 ...
 $mailer->send( ... );
}
et moi j'ai, pour l'nvoie en masse, j'utilise:
//envois des mails

foreach ($to as $address => $name)
        {
          if (is_int($address)) {
                $message->setTo($name);
          } else {
                $message->setTo(array($address => $name));
          }
         
          $numSent += $mailer->send($message, $failedRecipients);
        }
Je ne sait pas si c'est ici que ça bloque. En fait, je ne sais pas trop comment fusionner les deux codes. J'ai fait differrents test sans y parvenir.
Il faut dire que je ne suis pas expert. :wink:
A+

Re: swiftmailer plugin logger

par xTG » 28 juin 2012, 23:30

Ouais jusque là on comprend la même chose.
Si aucun affichage, cela évoquerai à la rigueur que ce plugin n'a rien effectué comme tâche ?
As-tu reçu les emails ?

swiftmailer plugin logger

par pitu69 » 28 juin 2012, 23:17

Bonjour :D ,

J'ai créer un logiciel de gestion de salle de spectacles et dans lequel il y a un module de mailing au spectateurs.

J'ai un fichier qui envoie les mails en utilisant la bibliotheque swiftmailer.

Les envoies se font via une requête mysql pour récupérer les adresses des spectateurs.

Dans le code j'appelle le plugin Logger de swiftmailer. Il est censé créer un log avec la liste des tâches effectuées "echo $logger->dump();"
En tout cas c'est ce que j'ai cru comprendre. http://swiftmailer.org/docs/plugins.html

Voilà le code de la page
<?php 
include_once("include/config/common.php");
require_once 'include/lib/swift_required.php';

//on recupère le titre du message
$titre=isset($_POST['titre'])?$_POST['titre']:"";
$titre= stripslashes($titre);
//on récupère le message 
$message=isset($_POST['message'])?$_POST['message']:"";
$message = stripslashes($message);


//creation du message html
$body = "<html><head> </ head><body>";
$body2 = "</body></html>";
$message = $body.$message.$body2;
$message_affiche=$message;

// Creation du message
$message = Swift_Message::newInstance()
	->setSubject($titre)
	->setFrom(array($mail => $entrep_nom))
	->setBody($message, 'text/html')
	->setReturnPath($mail)
	->setCharset('iso-8859-15');
	;


//Mail
$transport = Swift_MailTransport::newInstance();
 
//Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

?>
 <table width="760" border="0" class="page" align="center">
	<tr>
		<td class="page" align="center">
			<h3>Envoyé à</h3>
		</td>
	</tr>
	<tr>
		<td>
<?php
$sql2 = "SELECT DISTINCT mail, nom FROM ".$tblpref."client WHERE mail!= ''  AND actif='y' GROUP BY mail";
$req = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());
		$failedRecipients = array();
		$numSent = 0;
		$to = array();
			while($data = mysql_fetch_array($req))
			{
				$to[$data['mail']]=$data['nom'];
				$nom = $data['nom'];
				$a = $data['mail'];
				$nom_html= addslashes($nom);
				echo " $a -> $nom_html | ";
			}

// Utilisation du plugin anti-inondation réglé à 40 mails par lot
//$mailer->registerPlugin(new Swift_Plugins_AntiFloodPlugin(40));

//Utilisation du plugin anti-inondation réglé à 40 mails par lot et entre chaque envois (30 secs)
$mailer->registerPlugin(new Swift_Plugins_AntiFloodPlugin(40, 20));

// Or to use the Echo Logger
$logger = new Swift_Plugins_Loggers_EchoLogger();
$mailer->registerPlugin(new Swift_Plugins_LoggerPlugin($logger));


//envois des mails

foreach ($to as $address => $name)
	{
	  if (is_int($address)) {
		$message->setTo($name);
	  } else {
		$message->setTo(array($address => $name));
	  }
	 
	  $numSent += $mailer->send($message, $failedRecipients);
	}
?>
	</td>
</tr>
<tr>
	<td>
		<table class="page" align="center">
			<tr>
				<td><?php printf(" %d messages ont été envoyés\n", $numSent);?> <br />Titre du message: <?php echo $titre ;?></td>
			</tr>
			<tr>
				<td> Adresse utilisée:<?php echo $mail;?></td>
			</tr>
			<tr>
				<td>Corps du message:<br><?php echo $message_affiche;?></td>
			</tr>
			<tr><td><?php echo $logger->dump(); ?></td></tr>
		</table>
	</td>
</tr>
</table>
Vers 5 lignes avant la fin, je comprend que "echo $logger->dump();" doit m'afficher le journal non?

Si ce n'est pas ça, comment faire pour y parvenir.

A bientôt :D