예제 #1
0
</p>
<table>
    <tr>
        <td background="<?php 
    echo MIDCOM_STATIC_URL;
    ?>
/org.openpsa.core/default/rorschach-opaque.gif">
            <p>Table cell with background image.</p>
            <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vestibulum odio. Praesent est odio, aliquet vitae, hendrerit at, porttitor vitae, tellus. Morbi scelerisque dolor. Maecenas nunc. Morbi pretium posuere neque. Nullam cursus laoreet magna. Nam sed tellus et purus rhoncus lacinia. Aenean nonummy tempus eros. Mauris ut nisl. Suspendisse est mauris, porta a, pharetra ut, euismod ac, elit. Fusce id diam sit amet lorem vulputate iaculis. Suspendisse gravida quam sed nulla aliquam vulputate. Donec convallis, diam vitae congue semper, velit lectus rutrum justo, nec imperdiet pede eros sit amet ante.</p>
            <p>Phasellus eget tellus. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam gravida, orci eu lobortis semper, ipsum sem sagittis est, vel imperdiet metus turpis nec enim. Sed justo turpis, pretium a, cursus eget, bibendum eu, tortor. Sed sed est. Quisque gravida justo in lorem. Nullam in lacus id metus scelerisque faucibus. Nam tempor, lorem sed venenatis tempor, ligula purus euismod enim, vitae porttitor dui justo non ipsum. Aenean eros libero, varius quis, sodales eu, consequat aliquet, pede. Ut faucibus vulputate ligula. Curabitur dui. Nullam lacus ipsum, lacinia eu, hendrerit a, tincidunt quis, mi. Nullam dapibus, lacus quis euismod ultrices, lectus nisi vulputate nisl, quis molestie nulla metus feugiat risus. Vivamus sit amet diam. Vestibulum eget risus sit amet nulla vulputate porta. Duis quis massa. In id leo eu metus imperdiet blandit. Nulla ipsum. Nam luctus, leo a interdum blandit, tortor elit posuere ligula, quis molestie nisl nibh hendrerit tellus. Donec in lectus nec est blandit scelerisque.</p>
            <p>Donec varius tempus nulla. Integer diam eros, euismod vel, rhoncus sed, vulputate at, eros. Proin tincidunt. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi a odio. Suspendisse rhoncus lacus id libero. Proin libero. Cras ornare felis quis eros. Sed quis lectus. Integer sed arcu. In ullamcorper metus vel nunc. Vivamus ut lectus. Vivamus at orci. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Fusce sit amet pede a nisl tristique egestas. Donec eu pede. Morbi nisl. Fusce pede dolor, aliquam ac, bibendum in, semper quis, sem. </p>
        </td>
    </tr>
</table>

<em>Test person</em></textarea><br/>
            <input type="submit" value="Send" />
        </p>
    </form>
<?php 
} else {
    $mail = new org_openpsa_mail($_POST['backend']);
    $mail->to = $_POST['to'];
    $mail->from = $_POST['from'];
    $mail->subject = $_POST['subject'];
    $mail->html_body = $_POST['html_body'];
    $mail->embed_images();
    $ret = $mail->send();
    echo "mail->send returned {$ret}<br>\n";
}
echo "</p>\n";
예제 #2
0
파일: message.php 프로젝트: nemein/openpsa
 private function _send_email_member($member, &$subject, &$content, &$from, &$data_array)
 {
     if ($this->_check_member_deny($member, 'email')) {
         return;
     }
     if (!isset($GLOBALS['org_openpsa_directmarketing_campaign_message_send_i'])) {
         $GLOBALS['org_openpsa_directmarketing_campaign_message_send_i'] = 0;
     }
     $GLOBALS['org_openpsa_directmarketing_campaign_message_send_i']++;
     $token = $this->_create_email_token();
     $person =& org_openpsa_contacts_person_dba::get_cached($member->person);
     debug_add("Called for member #{$member->id}, (person #{$person->id}: {$person->rname})");
     //Make sure we have some backend and parameters for it defined
     if (!isset($data_array['mail_send_backend'])) {
         $data_array['mail_send_backend'] = 'try_default';
     }
     if (!isset($data_array['mail_send_backend_params'])) {
         $data_array['mail_send_backend_params'] = array();
     }
     //Check for bounce detector usage
     if (array_key_exists('bounce_detector_address', $data_array) && !empty($data_array['bounce_detector_address'])) {
         $bounce_address = str_replace('TOKEN', $token, $data_array['bounce_detector_address']);
         $mail->headers['Return-Path'] = $bounce_address;
         //Force bouncer as backend if default specified
         if (!array_key_exists('mail_send_backend', $data_array) || empty($data_array['mail_send_backend']) || $data_array['mail_send_backend'] == 'try_default') {
             $data_array['mail_send_backend'] = 'bouncer';
         }
     }
     $mail = new org_openpsa_mail($data_array['mail_send_backend'], $data_array['mail_send_backend_params']);
     $mail->to = $person->email;
     $subject = $member->personalize_message($subject, self::EMAIL_TEXT, $person);
     if ($this->test_mode) {
         $mail->subject = "[TEST] {$subject}";
     } else {
         $mail->subject = $subject;
     }
     $mail->from = $from;
     if (isset($data_array['reply-to'])) {
         $mail->headers['Reply-To'] = $data_array['reply-to'];
     }
     //Set some List-xxx headers to avoid auto-replies and in general to be a good netizen
     $mail->headers['List-Id'] = "<{$this->guid}@{$_SERVER['SERVER_NAME']}>";
     $mail->headers['List-Unsubscribe'] = '<' . $member->get_unsubscribe_url(false, $person) . '>';
     debug_add('mail->from: ' . $mail->from . ', mail->to: ' . $mail->to . ', mail->subject: ' . $mail->subject);
     switch ($this->orgOpenpsaObtype) {
         case self::EMAIL_TEXT:
             $mail->body = $member->personalize_message($content, $this->orgOpenpsaObtype, $person);
             break;
         case self::EMAIL_HTML:
             $mail->html_body = $member->personalize_message($content, $this->orgOpenpsaObtype, $person);
             if (array_key_exists('htmlemail_force_text_body', $data_array) && strlen($data_array['htmlemail_force_text_body']) > 0) {
                 $mail->body = $member->personalize_message($data_array['htmlemail_force_text_body'], $this->orgOpenpsaObtype, $person);
             }
             // Allow sensing only HTML body if requested
             if (array_key_exists('htmlemail_onlyhtml', $data_array) && !empty($data_array['htmlemail_onlyhtml'])) {
                 $mail->allow_only_html = true;
             }
             // Skip embedding if requested
             if (array_key_exists('htmlemail_donotembed', $data_array) && !empty($data_array['htmlemail_donotembed'])) {
                 // Skip embedding, do something else ??
             } else {
                 //The mail class uses a caching scheme to avoid fetching embedded objects again.
                 $mail->embed_images($this);
             }
             //Handle link detection
             if (array_key_exists('link_detector_address', $data_array) && !empty($data_array['link_detector_address'])) {
                 $link_address = str_replace('TOKEN', $token, $data_array['link_detector_address']);
                 $mail->html_body = $this->_insert_link_detector($mail->html_body, $link_address);
             }
             break;
         default:
             debug_add('Invalid message type, aborting', MIDCOM_LOG_ERROR);
             return array(false, $mail);
     }
     //Go trough DM2 types array for attachments
     reset($data_array['dm_types']);
     foreach ($data_array['dm_types'] as $field => $typedata) {
         if (empty($typedata->attachments_info)) {
             continue;
         }
         // If you don't want to add the image as an attachment to the field, add show_attachment customdata-definition to
         // schema and set it to false
         if (isset($typedata->storage->_schema->fields[$field]) && is_array($typedata->storage->_schema->fields[$field]) && isset($typedata->storage->_schema->fields[$field]['customdata']) && is_array($typedata->storage->_schema->fields[$field]['customdata']) && isset($typedata->storage->_schema->fields[$field]['customdata']['show_attachment']) && $typedata->storage->_schema->fields[$field]['customdata']['show_attachment'] === false) {
             continue;
         }
         foreach ($typedata->attachments_info as $attachment_data) {
             $att = array();
             $att['name'] = $attachment_data['filename'];
             $att['mimetype'] = $attachment_data['mimetype'];
             $fp = $attachment_data['object']->open('r');
             if (!$fp) {
                 //Failed to open attachment for reading, skip the file
                 continue;
             }
             $att['content'] = '';
             /* PONDER: Should we cache the content somehow so that we only need to read it once per request ??
                We would save some file opens at the expense of keeping the contents in memory (potentially very expensive) */
             while (!feof($fp)) {
                 $att['content'] .= fread($fp, 4096);
             }
             fclose($fp);
             debug_add("adding attachment '{$att['name']}' from field '{$field}' to attachments array");
             $mail->attachments[] = $att;
             unset($att);
         }
     }
     $status = $mail->send();
     if ($status) {
         debug_add('Mail sent to: ' . $mail->to);
         if (!$this->test_mode) {
             $member->create_receipt($this->id, org_openpsa_directmarketing_campaign_messagereceipt_dba::SENT, $token);
         }
     } else {
         $message = sprintf('FAILED to send mail to: %s, reason: %s', $mail->to, $mail->get_error_message());
         debug_add($message, MIDCOM_LOG_WARN);
         if (!$this->test_mode) {
             $params = array(array('domain' => 'org.openpsa.directmarketing', 'name' => 'send_error_message', 'value' => $message));
             $member->create_receipt($this->id, ORG_OPENPSA_MESSAGERECEIPT_FAILURE, $token, $params);
         }
         if ($this->send_output) {
             midcom::get('uimessages')->add(midcom::get('i18n')->get_string('org.openpsa.directmarketing', 'org.openpsa.directmarketing'), sprintf(midcom::get('i18n')->get_string('FAILED to send mail to: %s, reason: %s', 'org.openpsa.directmarketing'), $mail->to, $mail->get_error_message()), 'error');
         }
     }
     unset($mail);
     return $status;
 }