= '".(int)$lasthours."' AND AutoResponderID != '" . $member['LastResponderID'] . "' ORDER BY HoursAfterSubscription ASC LIMIT 1"; $responder_result = mysql_query($responder_query); $autoresponder = mysql_fetch_assoc($responder_result); mysql_free_result($responder_result); if (empty($autoresponder)) { continue; } if ($hours < $autoresponder['HoursAfterSubscription']) { continue; } $update_autoresponder_query = "UPDATE " . $TABLEPREFIX . "members SET LastResponderID='" . addslashes($autoresponder['AutoresponderID']) . "' WHERE MemberID='" . addslashes($member['MemberID']) . "'"; // We want to spread out the emails getting sent over the whole hour (if the user has throttling). // how many can we send per hour? $user_query = "SELECT * FROM " . $TABLEPREFIX . "admins WHERE AdminID='".addslashes($autoresponder['AdminID'])."'"; $user_result = mysql_query($user_query); $USER_DETAILS = mysql_fetch_assoc($user_result); mysql_free_result($user_result); $CURRENTADMIN = $USER_DETAILS; $PAUSE = 0; if ((int)$USER_DETAILS['PerHour'] > 0) { $PAUSE = 3600/(int)$USER_DETAILS['PerHour']; } if ($USER_DETAILS['EmailServer'] || $USER_DETAILS['EmailServer'] != '') $using_sockets = true; $search_criteria = unserialize(stripslashes($autoresponder['SearchCriteria'])); // if it's an old autoresponder - these won't be set. if (!isset($search_criteria['Status'])) $search_criteria['Status'] = '1'; if (!isset($search_criteria['Confirmed'])) $search_criteria['Confirmed'] = '1'; if (!isset($search_criteria['SearchFormat'])) $search_criteria['SearchFormat'] = 'ALL'; if (!isset($search_criteria['Email'])) $search_criteria['Email'] = ''; if (!isset($search_criteria['HaveClickedLink'])) $search_criteria['HaveClickedLink'] = ''; if (!isset($search_criteria['Fields'])) $search_criteria['Fields'] = array(); $fields = array(); if (!empty($search_criteria['Fields'])) { foreach(array_keys($search_criteria['Fields']) as $pos) { $key = current(array_keys($search_criteria['Fields'][$pos])); $fields[$key] = $search_criteria['Fields'][$pos][$key]; } } // make sure the member is part of this autoresponder.. $member_search = ReturnMembers($listid, $search_criteria['Email'], $search_criteria['Status'], $search_criteria['Confirmed'], $fields, $search_criteria['HaveClickedLink'], $search_criteria['SearchFormat'], false, array(), true, array(), 'Email', 'Up', $member['MemberID']); unset($search_criteria); if (empty($member_search)) continue; $send_details = array( 'ReturnPath' => stripslashes($autoresponder['ReturnPath']), 'SendName' => stripslashes($autoresponder['SendName']), 'SendFrom' => stripslashes($autoresponder['SendFrom']), 'ReplyTo' => stripslashes($autoresponder['ReplyTo']), 'Subject' => stripslashes($autoresponder['Subject']), 'SendID' => $autoresponder['AutoresponderID'], 'TrackLinks' => $autoresponder['TrackLinks'], 'TrackOpens' => $autoresponder['TrackOpens'], 'ListID' => $listid ); $email_details = array( 'AttachmentIDs' => explode(':', $autoresponder['AttachmentIDs']), 'ComposedID' => $autoresponder['AutoresponderID'], 'TextBody' => stripslashes($autoresponder['TextBody']), 'HTMLBody' => stripslashes($autoresponder['HTMLBody']), 'Subject' => stripslashes($autoresponder['Subject']) ); if (empty($email_details['TextBody']) && empty($email_details['HTMLBody'])) { mysql_query($update_autoresponder_query); unset($email_details); unset($autoresponder); continue; } if ($autoresponder['Multipart'] == 1) { $TheEmail = CreateEmail($autoresponder['AutoresponderID'], $member['MemberID'], 3, $send_details, $email_details, 'Auto', $member); } else { $TheEmail = CreateEmail($autoresponder['AutoresponderID'], $member['MemberID'], $member['Format'], $send_details, $email_details, 'Auto', $member); } // this will stop blank emails being sent to text subscribers if you send a html newsletter.. if (!$TheEmail) { $skip = true; if ($member['Format'] == 2) { $TheEmail = CreateEmail($autoresponder['AutoresponderID'], $member['MemberID'], 1, $send_details, $email_details, 'Auto', $member); if ($TheEmail != '') { $skip = false; } } if ($skip) { $temp_mem = load_member($member['MemberID'], $listid); log_mailing_error(DisplayDate(time()) . ',' . $temp_mem['Email'] . ',' . 'Subscriber would have received a blank email (subscribed to receive ' . (($member['Format'] == 2) ? 'HTML' : 'TEXT') . ')'); mysql_query($update_autoresponder_query); unset($email_details); unset($autoresponder); unset($TheEmail); unset($temp_mem); continue; } } $subject = EmailBody('0', $member['MemberID'], 'TEXT', $TheEmail['Subject'], $member, $listid, 'Auto'); $servermsg = false; // if they are using a specific server, use the SendEmail function... if ($using_sockets) { $emailmsg = "To: " . $TheEmail['Email'] . "\n" . "Subject: " . $subject . "\n" . $TheEmail['Headers'] . "\n" . $TheEmail['Body']; list($email_result, $servermsg) = SendEmail($TheEmail['Email'], $TheEmail['ReturnPath'], $emailmsg, $USER_DETAILS['EmailServer'], $USER_DETAILS['EmailServerPort']); $per_socket++; } // if there is no email server set, then use the internal php function. if (!$using_sockets) { if (SAFE_MODE) { $email_result = mail($TheEmail['Email'], $subject, $TheEmail['Body'], $TheEmail['Headers']); } else { $email_result = mail($TheEmail['Email'], $subject, $TheEmail['Body'], $TheEmail['Headers'], '-f' . $TheEmail['ReturnPath']); } } if (!$email_result) { $logmsg = 'Unable to Email'; if ($servermsg) $logmsg .= ': ' . $servermsg; log_mailing_error(DisplayDate(time()) . ',' . $TheEmail['Email'] . ',' . $logmsg); } mysql_query($update_autoresponder_query); if ($per_socket >= $PER_SOCKET_SEND && $using_sockets && isset($GLOBALS['EMAIL_SOCKET'])) { fputs($GLOBALS['EMAIL_SOCKET'], "quit"); fclose($GLOBALS['EMAIL_SOCKET']); unset($GLOBALS['EMAIL_SOCKET']); $per_socket = 0; } if ($PAUSE > 0 && $PAUSE < 1) { $p = floor($PAUSE*1000000); usleep($p); } else { sleep(floor($PAUSE)); } unset($email_details); unset($autoresponder); unset($TheEmail); unset($subject); } mysql_free_result($members); } ?>