/** * Send an automated response * * @param object $mailing The mailing object * @param int $queue_id The queue ID * @param string $replyto Optional reply-to from the reply * @return void * @access private * @static */ function autoRespond(&$mailing, $queue_id, $replyto) { $config =& CRM_Core_Config::singleton(); $contacts = CRM_Contact_DAO_Contact::getTableName(); $email = CRM_Core_DAO_Email::getTableName(); $queue = CRM_Mailing_Event_DAO_Queue::getTableName(); $eq =& new CRM_Core_DAO(); $eq->query("SELECT {$contacts}.preferred_mail_format as format,\n {$email}.email as email\n FROM {$contacts}\n INNER JOIN {$queue} ON {$queue}.contact_id = {$contacts}.id\n INNER JOIN {$email} ON {$queue}.email_id = {$email}.id\n WHERE {$queue}.id = " . CRM_Utils_Type::escape($queue_id, 'Integer')); $eq->fetch(); $to = empty($replyto) ? $eq->email : $replyto; $component =& new CRM_Mailing_BAO_Component(); $component->id = $mailing->reply_id; $component->find(true); $message =& new Mail_Mime("\n"); require_once 'CRM/Core/BAO/Domain.php'; $domain =& CRM_Core_BAO_Domain::getDomainById($mailing->domain_id); $headers = array('Subject' => $component->subject, 'To' => $to, 'From' => ts('"%1 Administrator" <%2>', array(1 => $domain->name, 2 => "do-not-reply@{$domain->email_domain}")), 'Reply-To' => "do-not-reply@{$domain->email_domain}", 'Return-Path' => "do-not-reply@{$domain->email_domain}"); /* TODO: do we need reply tokens? */ if ($eq->format == 'HTML' || $eq->format == 'Both') { $html = $component->body_html; require_once 'CRM/Utils/Token.php'; $html = CRM_Utils_Token::replaceDomainTokens($html, $domain, true); $message->setHTMLBody($html); } if (!$html || $eq->format == 'Text' || $eq->format == 'Both') { $text = $component->body_text; require_once 'CRM/Utils/Token.php'; $text = CRM_Utils_Token::replaceDomainTokens($text, $domain, false); $message->setTxtBody($text); } $b = $message->get(); $h = $message->headers($headers); $mailer =& $config->getMailer(); PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array('CRM_Mailing_BAO_Mailing', 'catchSMTP')); $mailer->send($to, $h, $b); CRM_Core_Error::setCallback(); }
/** * Get a domain object given a queue event * * @param int $queue_id The ID of the queue event * @return object $domain The domain owning the event * @access public * @static */ function &getDomain($queue_id) { $dao =& new CRM_Core_Dao(); $queue = CRM_Mailing_Event_BAO_Queue::getTableName(); $job = CRM_Mailing_BAO_Job::getTableName(); $mailing = CRM_Mailing_BAO_Mailing::getTableName(); $dao->query("SELECT {$mailing}.domain_id as domain_id\n FROM {$mailing}\n INNER JOIN {$job} \n ON {$job}.mailing_id = {$mailing}.id\n INNER JOIN {$queue}\n ON {$queue}.job_id = {$job}.id\n WHERE {$queue}.id = " . CRM_Utils_Type::escape($queue_id, 'Integer')); $dao->fetch(); if (empty($dao->domain_id)) { return null; } require_once 'CRM/Core/BAO/Domain.php'; return CRM_Core_BAO_Domain::getDomainById($dao->domain_id); }
/** * Get the domain object given a subscribe event * * @param int $subscribe_id ID of the subscribe event * @return object $domain The domain owning the event * @access public * @static */ function &getDomain($subscribe_id) { $dao =& new CRM_Core_Dao(); $subscribe = CRM_Mailing_Event_BAO_Subscribe::getTableName(); require_once 'CRM/Contact/BAO/Group.php'; $group = CRM_Contact_BAO_Group::getTableName(); $dao->query("SELECT {$group}.domain_id as domain_id\n FROM {$group}\n INNER JOIN {$subscribe}\n ON {$subscribe}.group_id = {$group}.id\n WHERE {$subscribe}.id = " . CRM_Utils_Type::escape($subscribe_id, 'Integer')); $dao->fetch(); if (empty($dao->domain_id)) { return null; } require_once 'CRM/Core/BAO/Domain.php'; return CRM_Core_BAO_Domain::getDomainById($dao->domain_id); }