Jump to content

How Can I Set Correct Newsletter Sending Time?


dejansoftware
 Share

Recommended Posts

Newsletter for announcements (Training schedule, Interviews schedule and Exams schedule) which are showing day in future when they will be published. The problem is because the my newsletter will send this training, Interviews or Exams one the day when the schedule is on (evening of this day, about 11 PM), but I would like if they can be sent at least one day before that term, otherwise, they are useless and they are just provoke our customers.Here are couple more clarifications:If I publish article/s from different categories, newsletter.php will check for new articles and all of them will be putted to the newsletter and automatically sent on 23:00 same day.For example:18th october is term for exam. Newsletter will be sent on 18th october in 23:00. So most of the customers will read it first thing in the morning (that's 19th), instead of at least 17th october.So the problem is just with scheduled articles for future publishing (Training schedule, Interviews schedule and Exams schedule).This Newsletter works fine with other informations published on site, the problem is just for articles schedules for future publishing

<?php	function auto_newsletter(){		global $webpath, $path, $prefix, $admin_mail, $title, $lang;		$lang = "latn";		$query = sprintf("SELECT datum FROM %s_logs WHERE sistem ='newsletter' LIMIT 1;", $prefix);		$sql = mysql_query($query) or die(mysql_error());		$data = mysql_fetch_array($sql, MYSQL_ASSOC);		$sql = NULL;		$time = 24;		$Datum = mktime(date("H")-$time, date("i"), date("s"), date("m") , date("d"), date("Y"));		$Datum = strtotime(date('Y-m-d H:i:s', $Datum));//		$data["datum"] = "2008-03-07 08:00:00 ";		$datum = strtotime(date('Y-m-d H:i:s', strtotime($data["datum"])));		$datum2 = date('Y-m-d H:i:s', mktime(date("H", strtotime($data["datum"]))+$time, date("i", strtotime($data["datum"])), date("s", strtotime($data["datum"])), date("m", strtotime($data["datum"])) , date("d", strtotime($data["datum"])), date("Y", strtotime($data["datum"]))));		if ($Datum > $datum) {						// Ovaj blok koristim za promjenu viewa odredjenih vijesti			// $prije = date('Y-m-d H:i:s', mktime(0, 0, 0, date("m")-3, date("d"), date("Y")));			// $query = sprintf("UPDATE %s_vijesti SET prikaz=0 WHERE objavljen < %s AND kategorija=2; ", $prefix, quote_smart($prije));			//  mysql_query($query) or die(zabrane("error", "Problem u skrivanju konkursa prije $prije"));			// kraj bloka			$query = sprintf("UPDATE %s_logs SET datum=%s WHERE sistem ='newsletter' LIMIT 1;", $prefix, quote_smart($datum2));			$sql = mysql_query($query);			// u ovom slucaju spamovanje naroda je ok, tako da treba sad skupiti vijesti za slanje			$query = sprintf("SELECT * FROM %s_vijesti WHERE lang='$lang' AND objavljen BETWEEN %s AND %s ORDER BY objavljen DESC; ", $prefix, quote_smart($data["datum"]), quote_smart($datum2));			$data = NULL;			$sql = mysql_query($query);			if (mysql_num_rows($sql) <> 0) {			// postoji li razlog za slanje newslettera			while ($data = mysql_fetch_array($sql, MYSQL_ASSOC)) {				$kat = $data["kategorija"];				if (file_exists($path."/docs/news/".$filename."-mala.jpg")) {				$html .= "<img src='".$webpath."/docs/news/".$filename."-mala.jpg' alt='' title='' align='left' hspace='10' vspace='10' />";			}				$page = modul_page('news_categorised', $data["kategorija"]);				$html .="<p><strong><a href='$webpath/$lang/?page=$page&kat=$kat&vijest=".$data["id"]."'>".$data["naslov"]."</a></strong>";				$text =  "<p>".strip_tags($data["text"])."<hr />";				$duzina = 400;				while(substr($text, $duzina, 1)<>" " AND strlen($text)>$duzina){ $duzina++; }				$html .= substr($text, 0, $duzina);			}			$html = "<h1>".convert("newsletter").": ".date('d.m.Y.', $datum)."</h1>".$html;			$query = sprintf("SELECT mail FROM %s_korisnici WHERE alerts>0 AND nivo>0; ", $prefix);			$sql = mysql_query($query) or die(mysql_error());			if (mysql_num_rows($sql) <> 0) {				require("$path/data/class.phpmailer.php");				$html = sprintf(convert("notification_header"), $webpath, $webpath, $webpath, $title, $title).$html.convert("notification_footer");				while ($data = mysql_fetch_array($sql, MYSQL_ASSOC)) {					$mejl = new PHPMailer();					$mejl->From	 = $admin_mail;					$mejl->FromName = $title;					$mejl->Host	 = "mail.vlada.net";					$mejl->Mailer   = "smtp";					$mejl->Subject  = convert("newsletter").": ".date('d.m.Y.', $datum);					$mejl->Body	= $html;					$mejl->AltBody = $title."\n________________________________\n".strip_tags($html);					$mejl->AddAddress($data["mail"]);				//	$mejl->AddBCC("robot@grave-design.com");//					echo $data["mail"], " ";					if(!$mejl->Send()) zabrane("mailer", $data["mail"]);					$mejl->ClearAddresses();					$mejl->ClearAttachments();				}			}			}		}		 	}?>

Please help me to solve this problem

Link to comment
Share on other sites

I assume this is where you get items between two dates:$query = sprintf("SELECT * FROM %s_vijesti WHERE lang='$lang' AND objavljen BETWEEN %s AND %s ORDER BY objavljen DESC; ", $prefix, quote_smart($data["datum"]), quote_smart($datum2));So it sounds like you need to move those dates back one day. Then when this script runs it will get items for one more day in the future instead of just for tomorrow.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...