예제 #1
0
파일: MdnTest.php 프로젝트: raz0rsdge/horde
 /**
  * @dataProvider getMdnReturnAddrProvider
  */
 public function testGetMdnReturnAddr($email)
 {
     $h = new Horde_Mime_Headers();
     $ob = new Horde_Mime_Mdn($h);
     if (!is_null($email)) {
         $ob->addMdnRequestHeaders($email);
     }
     $this->assertEquals(strval($email), $ob->getMdnReturnAddr());
 }
예제 #2
0
    public function testGenerate()
    {
        $h = new Horde_Mime_Headers();
        $ob = new Horde_Mime_Mdn($h);
        try {
            $ob->generate(true, true, 'deleted', 'foo', null);
            $this->fail('Expected Exception');
        } catch (RuntimeException $e) {
        }
        $date = 'Tue, 18 Nov 2014 20:14:17 -0700';
        $mdn_addr = 'Aäb <*****@*****.**>';
        $h->addHeader('Date', $date);
        $h->addHeader('Subject', 'Test');
        $h->addHeader('To', '"BAR" <*****@*****.**>');
        $ob->addMdnRequestHeaders($mdn_addr);
        $mailer = new Horde_Mail_Transport_Mock();
        $ob->generate(true, true, 'displayed', 'test.example.com', $mailer, array('from_addr' => '*****@*****.**'), array('error'), array('error' => 'Foo'));
        $sent = str_replace("\r\n", "\n", $mailer->sentMessages[0]);
        $this->assertEquals('auto-replied', $sent['headers']['Auto-Submitted']);
        $this->assertEquals('*****@*****.**', $sent['headers']['From']);
        $this->assertEquals($mdn_addr, Horde_Mime::decode($sent['headers']['To']));
        $this->assertEquals('Disposition Notification', $sent['headers']['Subject']);
        $this->assertStringMatchesFormat('This message is in MIME format.

--=%s
Content-Type: text/plain; format=flowed; DelSp=Yes

The message sent on Tue, 18 Nov 2014 20:14:17 -0700 to BAR  
<*****@*****.**> with subject "Test" has been displayed.

This is no guarantee that the message has been read or understood.

--=%s
Content-Type: message/disposition-notification

Reporting-UA: test.example.com; Horde Application Framework 5
Final-Recipient: rfc822;bar@example.com
Disposition: manual-action/MDN-sent-manually; displayed/error
Error: Foo

--=%s
Content-Type: message/rfc822

Date: Tue, 18 Nov 2014 20:14:17 -0700
Subject: Test
To: BAR <*****@*****.**>
Disposition-Notification-To: =?utf-8?b?QcOkYg==?= <*****@*****.**>

--=%s
', $sent['body']);
    }
예제 #3
0
파일: Compose.php 프로젝트: raz0rsdge/horde
 /**
  * Prepare header object with basic header fields and converts headers
  * to the current compose charset.
  *
  * @param array $headers  Array with 'from', 'to', 'cc', 'bcc', and
  *                        'subject' values.
  * @param array $opts     An array of options w/the following keys:
  *   - priority: (string) The message priority ('high', 'normal', 'low').
  *
  * @return Horde_Mime_Headers  Headers object with the appropriate headers
  *                             set.
  */
 protected function _prepareHeaders($headers, array $opts = array())
 {
     $ob = new Horde_Mime_Headers();
     $ob->addHeaderOb(Horde_Mime_Headers_Date::create());
     $ob->addHeaderOb(Horde_Mime_Headers_MessageId::create());
     $hdrs = array('From' => 'from', 'To' => 'to', 'Cc' => 'cc', 'Bcc' => 'bcc', 'Subject' => 'subject');
     foreach ($hdrs as $key => $val) {
         if (isset($headers[$val]) && (is_object($headers[$val]) || strlen($headers[$val]))) {
             $ob->addHeader($key, $headers[$val]);
         }
     }
     if ($this->replyType(true) == self::REPLY) {
         if ($refs = $this->getMetadata('references')) {
             $ob->addHeader('References', implode(' ', $refs));
         }
         if ($this->getMetadata('in_reply_to')) {
             $ob->addHeader('In-Reply-To', $this->getMetadata('in_reply_to'));
         }
     }
     /* Add priority header, if requested. */
     if (!empty($opts['priority'])) {
         switch ($opts['priority']) {
             case 'high':
                 $ob->addHeader('Importance', 'High');
                 $ob->addHeader('X-Priority', '1 (Highest)');
                 break;
             case 'low':
                 $ob->addHeader('Importance', 'Low');
                 $ob->addHeader('X-Priority', '5 (Lowest)');
                 break;
         }
     }
     /* Add Return Receipt Headers. */
     if (!empty($opts['readreceipt']) && ($h = $ob['from'])) {
         $from = $h->getAddressList(true);
         if (is_null($from->host)) {
             $from->host = $GLOBALS['injector']->getInstance('IMP_Factory_Imap')->create()->config->maildomain;
         }
         $mdn = new Horde_Mime_Mdn($ob);
         $mdn->addMdnRequestHeaders($from);
     }
     return $ob;
 }
예제 #4
0
파일: Compose.php 프로젝트: DSNS-LAB/Dmail
 /**
  * Prepare header object with basic header fields and converts headers
  * to the current compose charset.
  *
  * @param array $headers  Array with 'from', 'to', 'cc', 'bcc', and
  *                        'subject' values.
  * @param array $opts     An array of options w/the following keys:
  *   - bcc: (boolean) Add BCC header to output.
  *   - priority: (string) The message priority ('high', 'normal', 'low').
  *
  * @return Horde_Mime_Headers  Headers object with the appropriate headers
  *                             set.
  */
 protected function _prepareHeaders($headers, array $opts = array())
 {
     $ob = new Horde_Mime_Headers();
     $ob->addHeader('Date', date('r'));
     $ob->addMessageIdHeader();
     if (isset($headers['from']) && strlen($headers['from'])) {
         $ob->addHeader('From', $headers['from']);
     }
     if (isset($headers['to']) && (is_object($headers['to']) || strlen($headers['to']))) {
         $ob->addHeader('To', $headers['to']);
     } elseif (!isset($headers['cc'])) {
         $ob->addHeader('To', 'undisclosed-recipients:;');
     }
     if (isset($headers['cc']) && (is_object($headers['cc']) || strlen($headers['cc']))) {
         $ob->addHeader('Cc', $headers['cc']);
     }
     if (!empty($opts['bcc']) && isset($headers['bcc']) && (is_object($headers['bcc']) || strlen($headers['bcc']))) {
         $ob->addHeader('Bcc', $headers['bcc']);
     }
     if (isset($headers['subject']) && strlen($headers['subject'])) {
         $ob->addHeader('Subject', $headers['subject']);
     }
     if ($this->replyType(true) == self::REPLY) {
         if ($refs = $this->getMetadata('references')) {
             $ob->addHeader('References', implode(' ', $refs));
         }
         if ($this->getMetadata('in_reply_to')) {
             $ob->addHeader('In-Reply-To', $this->getMetadata('in_reply_to'));
         }
     }
     /* Add priority header, if requested. */
     if (!empty($opts['priority'])) {
         switch ($opts['priority']) {
             case 'high':
                 $ob->addHeader('Importance', 'High');
                 $ob->addHeader('X-Priority', '1 (Highest)');
                 break;
             case 'low':
                 $ob->addHeader('Importance', 'Low');
                 $ob->addHeader('X-Priority', '5 (Lowest)');
                 break;
         }
     }
     /* Add Return Receipt Headers. */
     if (!empty($opts['readreceipt'])) {
         $from = $ob->getOb('from');
         $from = $from[0];
         if (is_null($from->host)) {
             $from->host = $GLOBALS['injector']->getInstance('IMP_Factory_Imap')->create()->config->maildomain;
         }
         $mdn = new Horde_Mime_Mdn($ob);
         $mdn->addMdnRequestHeaders($from);
     }
     return $ob;
 }