Problema con la classe class.phpmailer.php

catellostefano

Utente Attivo
19 Dic 2008
525
2
0
www.stepo.biz
Salve a tutti,
ho un piccolo problemino con la suddetta classe

ecco la pagina che richaiama class.phpmailer.php, ma non riesce ad inviare la mail.

ecco la pagina
http://magnetforum.sc8.eu/mail/send.php

PHP:
<?
require_once("class.phpmailer.php");
require_once("dati.php");

$db = mysql_connect("localhost", "magforum_db", "***");
mysql_select_db("magforum_db", $db);

$querly = "SELECT email FROM user";
$result = mysql_query($querly, $db);
	
$y = mysql_num_rows($result);

for($x=1; $x<=$y; $x++)
{

$row = mysql_fetch_array($result);

$destinatario = $row[email];

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Host     = "mail.libero.it";
$mail->From     = "MagNetForum@magnetforum.sc8.eu";
$mail->FromName = "MagNetForum";
$mail->AddAddress("$destinatario");
$mail->IsHTML(true);  
$mail->Subject  =  $oggetto;
$mail->Body     =  $bodyhtml;

if(!$mail->Send())
    {
	echo $x."Si è verificato un errore nell'invio della mail a ".$destinatario."<br>";
    }
else
    {
	echo "Mail inviata con successo a ".$destinatario;
    }
}
?>

AIUTATEMI GRAZIE
 
Questa è una mia versione revisionata e modificata:
PHP:
<?php
// inclusione dei file
require_once('class.phpmailer.php');
require_once('dati.php');

// connessione al database
$db = mysql_connect('localhost', 'magforum_db', '***') or die(mysql_error());
mysql_select_db('magforum_db', $db) or die(mysql_error());

// eseguo la query SQL
$sql = 'SELECT email FROM user';
$query = mysql_query($sql, $db) or die(mysql_error());

// ciclo tutte le righe
while($assoc = mysql_fetch_assoc($query))
{
	// creo una nuova istanza della classe
	$mail = new PHPMailer();
	$mail->IsSMTP();
	$mail->IsHTML(true);
	
	// definisco i dati del server
	$mail->Host = 'smtp.libero.it';
	$mail->From = 'MagNetForum@magnetforum.sc8.eu';
	$mail->FromName = 'MagNetForum';
	
	// aggiungo il destinatario
	$mail->AddAddress($assoc['email']);
	
	// definisco oggetto e messaggio
	$mail->Subject = $oggetto;
	$mail->Body = $bodyhtml;
	
	// tento di inviare l'e-mail
	if($mail->Send())
	{
		// e-mail inviata correttamente
		echo "E-mail inviata correttamente a <b>{$assoc['email']}</b> <br />";
	}
	else
	{
		// impossibile inviare l'e-mail
		echo "Impossibile inviare l'e-mail a <b>{$assoc['email']}</b>: <b>{$mail->ErrorInfo}</b> <br />";
	}
	
	// libero la memoria allocata
	unset($mail);
}

// chiudo la connessione
mysql_close($db) or die(mysql_error());
?>
Fammi sapere se funziona! ;)
 
Ultima modifica:
ciao,
a parte il fatto che sarebbe bene specificare cosa è il problemino
se come sembra il tuo è un sistema per inviare news letteres, io al posto di quello che dice alex (che non se funzia o meno) metto

$mail->ClearAddresses();

il mio problema era che al primo giro del while inviava una email al primo indirizzo, al secondo giro inviava una'email al secondo indirizzo ed un altra al secondo, e cosi di seguito (fai il calcolo di quante email inviava se avavo 100 indirizzi)
inoltre ho messo uno sleep (cerca nel manuale php quello che lavora in microsecondi) tra un invio e l'altro
 
dimenticavo
io ho messo fuori dal while questa parte

$mail = new PHPMailer();
$mail->IsSMTP();
$mail->IsHTML(true);

// definisco i dati del server
$mail->Host = 'smtp.libero.it';
$mail->From = 'MagNetForum@magnetforum.sc8.eu';
$mail->FromName = 'MagNetForum'

quante volte vuoi istanziare la classe...
 

Discussioni simili