Пример #1
0
 public function extractContentHeader()
 {
     $headers = new RFC5322Header();
     foreach ($this->headers as $name => $header) {
         if (substr($name, 0, 7) == "content") {
             $headers->set($header);
         }
     }
     return $headers;
 }
Пример #2
0
 public static function parse($mimetype, $encoding, $body, $charset = "UTF-8")
 {
     $header = new RFC5322Header();
     $header->setValue("Content-Type", $mimetype);
     $header->get("Content-Type")->addExtra("charset", $charset);
     $header->setValue("Content-Transfer-Encoding", $encoding);
     switch ($encoding) {
         case "7bit":
         case "8bit":
         case "binary":
             // Keine weitere Kodierung gewuenscht!
             break;
         case "base64":
             $body = chunk_split(base64_encode($body), 76, "\r\n");
             break;
         case "quoted-printable":
             $body = quoted_printable_encode($body);
             break;
     }
     return new RFC5322PlainBody($header, $body);
 }
Пример #3
0
 public static function parseCancelObject($connection, $cancel, $message)
 {
     $header = new RFC5322Header();
     $header->setValue("Message-ID", $cancel->getMessageID());
     $header->setValue("From", RFC5322Address::parseObject($cancel->getAuthor())->getPlain());
     $header->setValue("Date", date("r", $cancel->getDate()));
     $header->setValue("Subject", "[CANCEL] " . $message->getSubject());
     $header->setValue("Control", "cancel " . $cancel->getReference());
     $header->setValue("User-Agent", "NNTPBoard <https://github.com/jungepiraten/nntpboard>");
     return new RFC5322Message($header, RFC5322MimeBody::parseCancelObject($cancel, $message));
 }
Пример #4
0
 public static function parseObject($message)
 {
     $parts = array();
     // Text-Teil
     if ($message->hasTextBody()) {
         $text = $message->getTextBody();
         if ($message->hasSignature()) {
             $text .= "\r\n-- \r\n" . $message->getSignature();
         }
         $parts[] = RFC5322PlainBody::parse("text/plain", "base64", $text);
     }
     // HTML-Teil
     if ($message->hasHTMLBody()) {
         $parts[] = RFC5322PlainBody::parse("text/html", "base64", $message->getHTMLBody());
     }
     // In einen alternative-Body packen (falls noetig)
     if (count($parts) > 1) {
         $header = new RFC5322Header();
         $header->setValue("Content-Type", "multipart/alternative");
         $header->get("Content-Type")->setExtra("boundary", "--" . md5(uniqid()));
         $parts = array(new RFC5322AlternativeMimeBody($header, $parts));
     }
     // Eventuelle Attachments verpacken wir jetzt
     foreach ($message->getAttachments() as $attachment) {
         $parts[] = RFC5322PlainBody::parseObject($attachment);
     }
     // ein multipart/mixed lohnt sich wirklich nur, wenn wir auch Attachments haben
     if (count($parts) > 1) {
         $header = new RFC5322Header();
         $header->setValue("MIME-Version", "1.0");
         $header->setValue("Content-Type", "multipart/mixed");
         $header->get("Content-Type")->addExtra("boundary", "--" . md5(uniqid()));
         return new RFC5322MixedMimeBody($header, $parts);
     }
     // ansonsten nehmen wir einfach dieses eine Attachment
     return array_shift($parts);
 }