예제 #1
0
function aem_set_option($name, $value = FALSE)
{
    $option = AEM_Option();
    $option->{$name} = $value;
    $option->save();
}
 /**
  * Repair data for send message
  *
  * @param array $args
  *
  * @return array
  */
 function generate_postdata($args = array())
 {
     $is_force = aem_get_option('aem_force_header', FALSE);
     $header = $this->process_header($args['headers']);
     /**
      * generate postFile
      */
     $emailData = array('subject' => $args['subject'], 'text' => $args['message'], 'isImportant' => $args['isImportant'], 'auto_text' => TRUE, 'auto_html' => TRUE);
     //From email
     if (!$is_force && isset($header['from_name'])) {
         $emailData["from_email"] = $header['from_email'];
     } else {
         $emailData["from_email"] = AEM_Option()->get_from_email();
     }
     $emailData["from_email"] = apply_filters('wp_mail_from', $emailData["from_email"]);
     //From name
     if (!$is_force && isset($header['from_name'])) {
         $emailData["from_name"] = $header['from_name'];
     } else {
         $emailData["from_name"] = AEM_Option()->get_from_name();
     }
     $emailData["from_name"] = apply_filters('wp_mail_from_name', $emailData["from_name"]);
     //to
     $emailData['to'] = array();
     if (!is_array($args['to'])) {
         $args['to'] = explode(',', $args['to']);
     }
     foreach ((array) $args['to'] as $recipient) {
         try {
             // Break $recipient into name and address parts if in the format "Foo <*****@*****.**>"
             $recipient_name = '';
             if (preg_match('/(.*)<(.+)>/', $recipient, $matches)) {
                 if (count($matches) == 3) {
                     $recipient_name = $matches[1];
                     $recipient = $matches[2];
                 }
             }
             $emailData['to'][] = array('email' => $recipient, 'name' => $recipient_name, 'type' => 'to');
         } catch (phpmailerException $e) {
             continue;
         }
     }
     //cc
     if (!empty($header['cc'])) {
         //header cc not empty
         if (empty($args['cc'])) {
             //arg cc empty, override agr cc
             $args['cc'] = $header['cc'];
         } else {
             //arg cc not empty
             if (!is_array($args['cc'])) {
                 $args['cc'] = explode(',', $args['cc']);
             }
             //merge them
             $args['cc'] = array_merge($header['cc']);
         }
     }
     if (!empty($args['cc'])) {
         foreach ((array) $args['cc'] as $recipient) {
             try {
                 // Break $recipient into name and address parts if in the format "Foo <*****@*****.**>"
                 $recipient_name = '';
                 if (preg_match('/(.*)<(.+)>/', $recipient, $matches)) {
                     if (count($matches) == 3) {
                         $recipient_name = $matches[1];
                         $recipient = $matches[2];
                     }
                 }
                 $emailData['to'][] = array('email' => $recipient, 'name' => $recipient_name, 'type' => 'cc');
             } catch (phpmailerException $e) {
                 continue;
             }
         }
     }
     //bcc
     if (!empty($header['bcc'])) {
         //header bcc not empty
         if (empty($args['bcc'])) {
             //arg bcc empty, override agr cc
             $args['bcc'] = $header['bcc'];
         } else {
             //arg bcc not empty
             if (!is_array($args['bcc'])) {
                 $args['bcc'] = explode(',', $args['bcc']);
             }
             //merge them
             $args['bcc'] = array_merge($header['bcc']);
         }
     }
     if (!empty($args['bcc'])) {
         foreach ((array) $args['bcc'] as $recipient) {
             try {
                 // Break $recipient into name and address parts if in the format "Foo <*****@*****.**>"
                 $recipient_name = '';
                 if (preg_match('/(.*)<(.+)>/', $recipient, $matches)) {
                     if (count($matches) == 3) {
                         $recipient_name = $matches[1];
                         $recipient = $matches[2];
                     }
                 }
                 $emailData['to'][] = array('email' => $recipient, 'name' => $recipient_name, 'type' => 'bcc');
             } catch (Exception $e) {
                 continue;
             }
         }
     }
     if (!isset($header['content_type'])) {
         $content_type = 'text/plain';
     } else {
         $content_type = $header['content_type'];
     }
     $content_type = apply_filters('wp_mail_content_type', $content_type);
     if ($content_type == "text/html") {
         $emailData['html'] = $args['message'];
     }
     /**
      * Extras data
      */
     $extras = array();
     //Click tracking
     if (isset($args['isClickTracking'])) {
         $extras['track_clicks'] = $args['isTracking'];
     } else {
         $extras['track_clicks'] = AEM_Option()->is_click_tracking();
     }
     //open tracking
     if (isset($args['isOpenTracking'])) {
         $extras['track_opens'] = $args['isOpenTracking'];
     } else {
         $extras['track_opens'] = AEM_Option()->is_open_tracking();
     }
     //Domain tracking
     if (isset($args['isDomainTracking'])) {
         $extras['track_domain'] = $args['isDomainTracking'];
     } else {
         $extras['track_domain'] = aem_get_option('mandrill_domain_tracking');
     }
     //signing domain
     if (isset($args['signing_domain'])) {
         $extras['signing_domain'] = $args['signing_domain'];
     } else {
         $extras['signing_domain'] = aem_get_option('mandrill_signing_domain');
     }
     //tagging
     $extras['tags'] = explode(",", aem_get_option("mandrill_tag", ""));
     if (isset($args['tags'])) {
         if (!is_array($args['tags'])) {
             $args['tags'] = explode(",", $args['tags']);
         }
         $extras['tags'] = array_merge($extras['tags'], (array) $args['tags']);
     }
     //campaign id
     if (isset($args['subaccount'])) {
         $extras['subaccount'] = $args['subaccount'];
     } else {
         $extras['subaccount'] = aem_get_option("mandrill_subaccount", NULL);
     }
     //custom header
     if (isset($args['headers'])) {
         //extract header line
         $header_arr = explode("\r\n", $args['headers']);
         foreach ($header_arr as $header) {
             //extract header key:value
             $tmp = explode(':', $header);
             if (count($tmp) > 1) {
                 if ($tmp[1] != NULL) {
                     if (strtolower($tmp[0]) == 'from') {
                         if (aem_get_option('aem_force_header')) {
                             continue;
                         }
                     }
                     $extras['headers'][$tmp[0]] = $tmp[1];
                 }
             }
         }
     }
     $fileData = array();
     //$args['attachments'] = array(plugin_dir_path( AEM_PLUGIN_FILE )."/inc/ae/assets/img/slider.png");
     if (!empty($args['attachments'])) {
         foreach ($args['attachments'] as $attachment) {
             $file_content = file_get_contents($attachment);
             $fileData[] = array('name' => basename($attachment), 'content' => base64_encode($file_content));
         }
         $emailData['attachments'] = $fileData;
     }
     //combine
     $emailData = array_merge($emailData, $extras);
     $postData = apply_filters("aem_postdata", $emailData);
     return $postData;
 }
 /**
  * Repair data for send message
  *
  * @param array $args
  *
  * @return array
  */
 function generate_postdata($args = array())
 {
     $is_force = aem_get_option('aem_force_header', FALSE);
     $header = $this->process_header($args['headers']);
     /**
      * generate postFile
      */
     $emailData = array('to' => $args['to'], 'subject' => $args['subject'], 'text' => $args['message']);
     //From email
     if (!$is_force && isset($header['from_name'])) {
         $from_email = $header['from_email'];
     } else {
         $from_email = AEM_Option()->get_from_email();
     }
     $from_email = apply_filters('wp_mail_from', $from_email);
     //From name
     if (!$is_force && isset($header['from_name'])) {
         $from_name = $header['from_name'];
     } else {
         $from_name = AEM_Option()->get_from_name();
     }
     $from_name = apply_filters('wp_mail_from_name', $from_name);
     $emailData['from'] = sprintf('%1$s<%2$s>', $from_name, $from_email);
     //cc
     if (!empty($header['cc'])) {
         $header['cc'] = implode(",", $header['cc']);
         //header cc not empty
         if (empty($args['cc'])) {
             //arg cc empty, override agr cc
             $emailData['cc'] = $header['cc'];
         } else {
             //merge them
             $emailData['cc'] = trim($args['cc'], ',') . "," . trim($header['cc'], ',');
         }
     }
     //bcc
     if (!empty($header['bcc'])) {
         $header['bcc'] = implode(",", $header['bcc']);
         //header bcc not empty
         if (empty($args['bcc'])) {
             //arg bcc empty, override agr bcc
             $emailData['bcc'] = $header['bcc'];
         } else {
             //merge them
             $emailData['bcc'] = trim($args['bcc'], ',') . "," . trim($header['bcc'], ',');
         }
     }
     if (!isset($header['content_type'])) {
         $content_type = 'text/plain';
     } else {
         $content_type = $header['content_type'];
     }
     $content_type = apply_filters('wp_mail_content_type', $content_type);
     if ($content_type == "text/html") {
         $emailData['html'] = $args['message'];
     }
     /**
      * Extras data
      */
     $extras = array();
     //Click tracking
     if (isset($args['isClickTracking'])) {
         $extras['o:tracking-clicks'] = $args['isTracking'];
     } else {
         $extras['o:tracking-clicks'] = AEM_Option()->is_click_tracking();
     }
     //open tracking
     if (isset($args['isOpenTracking'])) {
         $extras['o:tracking-opens'] = $args['isOpenTracking'];
     } else {
         $extras['o:tracking-opens'] = AEM_Option()->is_open_tracking();
     }
     //General tracking
     $extras['o:tracking'] = TRUE;
     //schedule time
     if (isset($args['deliverytime'])) {
         $extras['o:deliverytime'] = $args['deliverytime'];
     }
     //tagging
     if (isset($args['tags'])) {
         if (!is_array($args['tags'])) {
             $args['tags'] = (array) $args['tags'];
         }
         $extras['o:tag'] = $args['tags'];
     } else {
         $extras['o:tag'] = explode(",", aem_get_option("mailgun_tag", NULL));
     }
     //campaign id
     if (isset($args['campaignId'])) {
         $extras['o:campaign'] = $args['campaignId'];
     } else {
         $extras['o:campaign'] = aem_get_option("mailgun_campaignid", NULL);
     }
     //custom header
     if (isset($args['headers'])) {
         //extract header line
         $header_arr = explode("\r\n", $args['headers']);
         foreach ($header_arr as $header) {
             //extract header key:value
             $tmp = explode(':', $header);
             if (count($tmp) > 1) {
                 if ($tmp[1] != NULL) {
                     if (strtolower($tmp[0]) == 'from') {
                         if (aem_get_option('aem_force_header')) {
                             continue;
                         }
                     }
                     $extras['h:' . $tmp[0]] = $tmp[1];
                 }
             }
         }
     }
     //combine
     $emailData = array_merge($emailData, $extras);
     /**
      * Generate post file
      */
     $fileData = array();
     if (!empty($args['attachments'])) {
         $fileData = array('attachment' => $args['attachments']);
     }
     /**
      * combine all
      */
     $postData = array('emailData' => $emailData, 'fileData' => $fileData);
     $postData = apply_filters("aem_postdata", $postData);
     return $postData;
 }
 /**
  * Repair data for send message
  *
  * @param array $args
  *
  * @return array
  */
 function generate_postdata($args = array())
 {
     $emailData = new SendGrid\Email();
     $is_force = aem_get_option('aem_force_header', FALSE);
     $header = $this->process_header($args['headers']);
     /**
      * generate postFile
      */
     $emailData->setSubject($args['subject']);
     $emailData->setText($args['subject']);
     //From email
     if (!$is_force && isset($header['from_name'])) {
         $from_email = $header['from_email'];
     } else {
         $from_email = AEM_Option()->get_from_email();
     }
     $from_email = apply_filters('wp_mail_from', $from_email);
     $emailData->setFrom($from_email);
     //From name
     if (!$is_force && isset($header['from_name'])) {
         $from_name = $header['from_name'];
     } else {
         $from_name = AEM_Option()->get_from_name();
     }
     $from_name = apply_filters('wp_mail_from_name', $from_name);
     $emailData->setFromName($from_name);
     //to
     if (!is_array($args['to'])) {
         $args['to'] = explode(',', $args['to']);
     }
     foreach ((array) $args['to'] as $recipient) {
         try {
             // Break $recipient into name and address parts if in the format "Foo <*****@*****.**>"
             $recipient_name = '';
             if (preg_match('/(.*)<(.+)>/', $recipient, $matches)) {
                 if (count($matches) == 3) {
                     $recipient_name = $matches[1];
                     $recipient = $matches[2];
                 }
             }
             $emailData->addTo($recipient, $recipient_name);
         } catch (phpmailerException $e) {
             continue;
         }
     }
     //cc
     if (!empty($header['cc'])) {
         //header cc not empty
         if (empty($args['cc'])) {
             //arg cc empty, override agr cc
             $args['cc'] = $header['cc'];
         } else {
             //arg cc not empty
             if (!is_array($args['cc'])) {
                 $args['cc'] = explode(',', $args['cc']);
             }
             //merge them
             $args['cc'] = array_merge($header['cc']);
         }
     }
     if (!empty($args['cc'])) {
         foreach ((array) $args['cc'] as $recipient) {
             try {
                 // Break $recipient into name and address parts if in the format "Foo <*****@*****.**>"
                 $recipient_name = '';
                 if (preg_match('/(.*)<(.+)>/', $recipient, $matches)) {
                     if (count($matches) == 3) {
                         $recipient_name = $matches[1];
                         $recipient = $matches[2];
                     }
                 }
                 $emailData->addCc($recipient);
             } catch (phpmailerException $e) {
                 continue;
             }
         }
     }
     //bcc
     if (!empty($header['bcc'])) {
         //header bcc not empty
         if (empty($args['bcc'])) {
             //arg bcc empty, override agr cc
             $args['bcc'] = $header['bcc'];
         } else {
             //arg bcc not empty
             if (!is_array($args['bcc'])) {
                 $args['bcc'] = explode(',', $args['bcc']);
             }
             //merge them
             $args['bcc'] = array_merge($header['bcc']);
         }
     }
     if (!empty($args['bcc'])) {
         foreach ((array) $args['bcc'] as $recipient) {
             try {
                 // Break $recipient into name and address parts if in the format "Foo <*****@*****.**>"
                 $recipient_name = '';
                 if (preg_match('/(.*)<(.+)>/', $recipient, $matches)) {
                     if (count($matches) == 3) {
                         $recipient_name = $matches[1];
                         $recipient = $matches[2];
                     }
                 }
                 $emailData->addBcc($recipient);
             } catch (Exception $e) {
                 continue;
             }
         }
     }
     if (!isset($header['content_type'])) {
         $content_type = 'text/plain';
     } else {
         $content_type = $header['content_type'];
     }
     $content_type = apply_filters('wp_mail_content_type', $content_type);
     if ($content_type == "text/html") {
         $emailData->setHtml($args['message']);
     }
     //custom header
     if (isset($args['headers']) && is_array($args['headers'])) {
         //extract header line
         $header_arr = explode("\r\n", $args['headers']);
         foreach ($header_arr as $header) {
             //extract header key:value
             $tmp = explode(':', $header);
             if (count($tmp) > 1) {
                 if ($tmp[1] != NULL) {
                     if (strtolower($tmp[0]) == 'from') {
                         if (aem_get_option('aem_force_header')) {
                             continue;
                         }
                     }
                     $emailData->addHeader($tmp[0], $tmp[1]);
                 }
             }
         }
     }
     //$args['attachments'] = array ( plugin_dir_path( AEM_PLUGIN_FILE )."/inc/ae/assets/img/slider.png" );
     if (!empty($args['attachments'])) {
         $emailData->setAttachments($args['attachments']);
     }
     $postData = apply_filters("aem_postdata", $emailData);
     return $postData;
 }