Go to the documentation of this file.00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00017 final class MimeMail implements MailBuilder
00018 {
00019 private $parts = array();
00020
00021
00022 private $body = null;
00023 private $headers = null;
00024
00025 private $boundary = null;
00026
00030 public function addPart(MimePart $part)
00031 {
00032 $this->parts[] = $part;
00033
00034 return $this;
00035 }
00036
00037 public function build()
00038 {
00039 if (!$this->parts)
00040 throw new UnimplementedFeatureException();
00041
00042 if (!$this->boundary)
00043 $this->boundary = '=_'.md5(microtime(true));
00044
00045 $mail =
00046 MimePart::create()->
00047 setContentType('multipart/mixed')->
00048 setBoundary($this->boundary);
00049
00050 $this->headers =
00051 "MIME-Version: 1.0\n"
00052 .$mail->getHeaders();
00053
00054 foreach ($this->parts as $part)
00055 $this->body .=
00056 '--'.$this->boundary."\n"
00057 .$part->getHeaders()
00058 ."\n\n"
00059 .$part->getEncodedBody()."\n";
00060
00061 $this->body .= '--'.$this->boundary."--"."\n\n";
00062 }
00063
00064 public function getEncodedBody()
00065 {
00066 Assert::isTrue(
00067 $this->body && $this->headers
00068 );
00069
00070 return $this->body;
00071 }
00072
00073 public function getHeaders()
00074 {
00075 Assert::isTrue(
00076 $this->body && $this->headers
00077 );
00078
00079 return $this->headers;
00080 }
00081
00085 public function setBoundary($boundary)
00086 {
00087 $this->boundary = $boundary;
00088
00089 return $this;
00090 }
00091
00092 public function getBoundary()
00093 {
00094 return $this->boundary;
00095 }
00096 }
00097 ?>