se puede hacer de varias maneras, pero como estas en la seccion php lo vamos hacer en PHP y mysql.
primero
una tabla que tenga los datos basicos para el envio de un mail
Código:
CREATE TABLE `sendmail` (
`id` int(4) NOT NULL auto_increment,
`sto` varchar(200) default NULL,
`sfrom` varchar(200) default NULL,
`contactoNombre` varchar(200) default NULL,
`asunto` varchar(200) default NULL,
`body` text,
`fecha_at` datetime default NULL,
`fecha_in` datetime default NULL,
`estado` int(1) default '1',
PRIMARY KEY (`id`)
) ENGINE=MyISAM CHARSET=latin1
ahora con la clase phpmailer
este codigo funciona bien solo copy y paste
Código PHP:
function SendMail($nombre, $to, $from, $body, $subject, $id, $username, $password, $smtp, $port){
$mail = new PHPMailer();
$mail->From = $from;
$mail->FromName = $nombre;
$mail->Mailer = 'mail';
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Username = $username;
$mail->Password = $password;
$mail->Port = $port;
$mail->Host = $smtp;
$mail->AddReplyTo("","");
$mail->AddAddress($to,"");
$mail->WordWrap = 50;
$mail->IsHTML(true); // Activamos el formato HTML
$mail->Subject = $subject;
//$mail->AddEmbeddedImage("../info/".$portada, "imagen", "imagen.jpg"); //Imagen embebida en el mensaje
//$imagen = "<img src='cid:imagen' alt=''>";
$mail->Body = $$imagen.$body;
$mail->AltBody = "";
if($mail->Send())
{
$fechaFin = date("Y-m-d H:i:s");
echo "$to $username<br>";
$SQL = "update sendmail set estado='1', fechaFin = '$fecha_in' where id=$id ";
return $SQL;
}else{
echo "Correo $to no enviado<br>";
}
//sleep(10); tiempo de espera para enviar otro mail
}
ahora para llamar esa funcion debes leer tu tabla y llamarla de esta manera
Código PHP:
include("phpmailer/class.phpmailer.php");
include("cn.php");
$port = 25;
$nombre = "FiDeLio";
$link = Conectarse();
$sql = "select * from sendmail where estado=0";
$result = mysql_query($sql);
$username = "[email protected]";
$password = "top_secret";
$smtp = "smtp.dominio.com";
while($row = mysql_fetch_array($result)){
$SQL = SendMail($nombre, $row["sto"], $row["sfrom"], $body, $row["asunto"], $row["id"], $username, $password, $smtp, $port);
mysql_query($SQL,$link);
}
mysql_free_result($result);
mysql_close($link);
y para terminar ejecutas tu pagina desde un cron, de esta manera.
Código:
* * */1 * * wget -q -O /dev/null http://localhost/crontab/enviar_mail.php
obiamente todo el coddo q esta debe estar en una pagina llamada enviar_mail.php
suerte