public function extractContentHeader() { $headers = new RFC5322Header(); foreach ($this->headers as $name => $header) { if (substr($name, 0, 7) == "content") { $headers->set($header); } } return $headers; }
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); }
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)); }
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); }