⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 notifybirthdays.php

📁 一个页面界面的邮件程序
💻 PHP
字号:
<?phprequire_once("../inc/constants.inc.php");require_once("../inc/properties.inc.php");require_once("../inc/tools.inc.php");require_once("../inc/db.inc.php");header('Content-type: text/plain;');function booleanValue($val) {	if ($val)		return "1";	else		return "0";}function formatEmailOrURL($value) {	if (strpos($value, "@") != false)		return "<a href=\"mailto:$value\">$value</a>";	else if (strstr($value, "http") != false)		return "<a href=\"$value\">$value</a>";	else		return $value;}$emailSent = 0;$today = getdate();$headers  = "MIME-Version: 1.0\n";$headers .= "Content-type: text/html; charset=UTF-8\n";$headers .= "X-Priority: 3\n";$headers .= "X-MSMail-Priority: Normal\n";$headers .= "X-Mailer: GContact\n";$headers .= "From: \"".EMAIL_FROM_NAME."\" <".EMAIL_FROM_ADDRESS.">\n";$sqlUsers = "SELECT * FROM `user` WHERE notifybirthday != 0 AND lastmailsent != '". $today["year"] ."-". $today["mon"] ."-". $today["mday"] ."'";echo "[SQL USERS: $sqlUsers]\r\n";$resultUsers = mysql_query($sqlUsers) or die("Error in SQL : " . $sqlUsers);if ($resultUsers && mysql_num_rows($resultUsers) > 0) {		while ($lineUser = mysql_fetch_assoc($resultUsers)) {		$userId = $lineUser['id'];		$userEmail = $lineUser['email'];		$userNotify = $lineUser['notifybirthday'];		$userSendDuringTheDay = ($userNotify & NOTIFY_BIRTHDAYS_DURING_THE_DAY) == NOTIFY_BIRTHDAYS_DURING_THE_DAY;		$userSend1DayBefore = ($userNotify & NOTIFY_BIRTHDAYS_1_DAY_BEFORE) == NOTIFY_BIRTHDAYS_1_DAY_BEFORE;		$userSend2DaysBefore = ($userNotify & NOTIFY_BIRTHDAYS_2_DAYS_BEFORE) == NOTIFY_BIRTHDAYS_2_DAYS_BEFORE;		$userSend5DaysBefore = ($userNotify & NOTIFY_BIRTHDAYS_5_DAYS_BEFORE) == NOTIFY_BIRTHDAYS_5_DAYS_BEFORE;		$userMailSent = false;		echo "=> USER [id:$userId] [email:$userEmail] [notifyBirthdays:$userNotify]" .				"[values {Today:". booleanValue($userSendDuringTheDay) ."} {1 Day before:". booleanValue($userSend1DayBefore) ."}" .						" {2 Day before:". booleanValue($userSend2DaysBefore) ."} {5 Day before:". booleanValue($userSend5DaysBefore) ."}]\r\n";		$sqlBirthdays = "SELECT P.* FROM `person` P, `user_person` UP " .				" WHERE P.id = UP.idperson AND UP.role != 1 AND P.birthdate != '0000-00-00' AND UP.iduser = '$userId'" .				" ORDER BY DATE_FORMAT(P.birthdate, '%m'), DATE_FORMAT(P.birthdate, '%d'), P.firstname, P.lastname";		echo "[SQL BIRTHDAYS: $sqlBirthdays]\r\n";		$resultBirthdays = mysql_query($sqlBirthdays) or die("Error in SQL : " . $sqlBirthdays);				$b = 0;				$birthdays = getBirthdays($resultBirthdays, $b, $begin);						$i = (!isset($begin)) ? 0 : $begin;		$nb = 0;		$dayDiff = 0;		while (($nb < $b) && ($dayDiff < 6)) {			$id = $birthdays[$i][ID];			$firstname = $birthdays[$i][FIRSTNAME];			$lastname = $birthdays[$i][LASTNAME];			$age = $birthdays[$i][AGE];			$birthdayDay = $birthdays[$i][BIRTHDATE_DAY];			$birthdayMonth = $birthdays[$i][BIRTHDATE_MONTH];			$birthdayYear = $birthdays[$i][BIRTHDATE_YEAR];			echo "\r\n\tLooking $firstname $lastname, $birthdayDay/$birthdayMonth/$birthdayYear [$age]\r\n";			$tsNow = time();			$year = $today["year"];						// If the birthday is next year, we must add an year			if ($birthdayMonth <= $today["month"] && $birthdayDay < $today["mday"])				$year++;				$tsBirtday = mktime (0, 0, 0, $birthdayMonth, $birthdayDay, $year);						echo "\t[today : ".$today["mday"]."/".$today["mon"]."/".$today["year"]."] [Next Birthday : $birthdayDay/$birthdayMonth/$year]";			$tsDiff = $tsBirtday - $tsNow;			$dayDiff = ceil( $tsDiff / SECONDS_IN_A_DAY);			echo " [Difference in day : $dayDiff]\r\n";									$send = false;			$msgBeforeBirthday = "";						if ($userSendDuringTheDay && $dayDiff == 0) {				$send = true;				$msgBeforeBirthday = "[AUJOURD'HUI]";			}			if ($userSend1DayBefore && $dayDiff == 1) {				$send = true;				$msgBeforeBirthday = "[DEMAIN]";			}			if ($userSend2DaysBefore && $dayDiff == 2) {				$send = true;				$msgBeforeBirthday = "[APRES-DEMAIN]";			}			if ($userSend5DaysBefore && $dayDiff == 5) {				$send = true;				$msgBeforeBirthday = "[DANS 5 JOURS]";			}						if ($send) {				$mailSubject = "$msgBeforeBirthday Anniversaire de \"$lastname $firstname\" le ". $birthdayDay ."/". $birthdayMonth;				if ($birthdayYear != "" && $birthdayYear != "0000")					$mailSubject .= ", n茅(e) en $birthdayYear";				if ($age != "")					$mailSubject .= ". Il ou elle fetera ses $age an" . (($age == 1) ? "" : "s");				$mailSubject .= ".";					/* First line */				$mailContent = "<html>" .						"<head>" .							"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />" .							"<style>" .								"body { margin: 10px; background-color: white; } " .								"* { font-family: } " .								"a,a:link,a:visited { color: #03006D; text-decoration: underline; } " .								"a:hover { color: white;	background-color: #03006D; text-decoration: underline; } " .								"h1 { font-size: larger; margin-bottom: 5px; } " .								"h2 { font-size: medium; margin: 10px 0px 0px 0px; border-bottom: 1px dashed black; } " .								"h3 { font-size: small; margin: 10px 0px 0px 0px; font-size: 15px; border-bottom: 1px solid black; } " .								"ul { margin: 0px; padding: 0px;	padding-left: 20px; list-style-type: square; line-height: 20px; } " .							"</style>" .						"</head>" .						"<body>" .						"<h1>$mailSubject</h1>";				/* Adding contacts */				$sqlContacts = "SELECT * FROM contact WHERE idperson = $id";				$resultContacts = mysql_query($sqlContacts);				if ($resultContacts && mysql_num_rows($resultContacts) > 0) {					$mailContent .= "<h2>Contacts :</h2><ul>";					while ($lineCt = mysql_fetch_assoc($resultContacts)) {						$mailContent .= "<li>". prepShowValue($lineCt['type']) ." : ". formatEmailOrURL(prepShowValue($lineCt['value'])) ."</li>";					}					$mailContent .= "</ul>";				}				/* Adding addresses */				$sqlAddress = "SELECT * FROM address WHERE idperson = $id";				$resultAddress = mysql_query($sqlAddress);				if ($resultAddress && mysql_num_rows($resultAddress) > 0) {					$mailContent .= "<h2>Adresses :</h2><ul>";					while ($lineAd = mysql_fetch_assoc($resultAddress)) {						$mailContent .= "<li>". prepShowValue($lineAd['title']) ." : ". prepShowValue($lineAd['street']) ." ". prepShowValue($lineAd['zipcode']) ." ". prepShowValue($lineAd['town']) ." ". prepShowValue($lineAd['country']);						if (isset($lineAd['note']))							$mailContent .= "<br/>". prepShowValue($lineAd['note']);						$mailContent .= "</li>";					}					$mailContent .= "</ul>";				}				/* footer */				$mailContent .= "<h3>GContact / ". formatEmailOrURL( ("http". ((SSL) ? "s" : "") ."://". URL) ) . "</h3>" .						"</body></html>";				echo "\t==> Sending email [to:$userEmail] [Subject: $mailSubject]\r\n[body: $mailContent]\r\n-------------------------------------\r\n";				if (mail($userEmail, $mailSubject, $mailContent, $headers)) { 					echo "\t[X] MAIL SENT !!!\r\n";					$emailSent++;					if ($userMailSent == false) {						$sqlUpdateUser = "UPDATE `user` SET lastmailsent = '". $today["year"] ."-". $today["mon"] ."-". $today["mday"] ."' WHERE id='$userId'";						echo "\t[SQL UPDATE USER (Last email sent): $sqlUpdateUser]\r\n";						$resultUpdateUser = mysql_query($sqlUpdateUser) or die("Error in SQL : " . $sqlUpdateUser);						$userMailSent = !$userMailSent;					}									} else					echo "\t[-] ERROR WHILE SENDING EMAIL !";							} else {				echo "\t--- Ignoring $firstname $lastname";			}			$i++;			$nb++;			if ($i >= $b)				$i = 0;		}	}}echo "\r\n\r\n=========================================\r\n";echo "======= NUMBER OF EMAILS SENT : $emailSent =======\r\n";echo "=========================================\r\n";?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -