protected function create($method_name, $args) { $mail = new SMail($this->date); if (is_array($this->from)) $mail->set_from($this->from[0], $this->from[1]); else $mail->set_from($this->from); if (!is_array($this->recipients)) $this->recipients = array($this->recipients); foreach ($this->recipients as $to) { if (is_array($to)) $mail->add_to($to[0], $to[1]); else $mail->add_to($to); } $mail->set_subject($this->subject); if (is_array($this->body)) { $template = $this->get_template_name($method_name); if (file_exists($this->get_template_path($template.'.plain'))) $mail->set_text($this->render($template.'.plain', $this->body)); if (file_exists($this->get_template_path($template.'.html'))) $mail->set_html_text($this->render($template.'.html', $this->body)); } elseif (is_string($this->body) && !empty($this->body)) { $mail->set_text($this->body); } foreach ($this->parts as $p) { $p = array_merge(self::$part_defaults, $p); $mail->add_part($p['content'], $p['content_type'], $p['encoding'], $p['charset']); } foreach ($this->attachments as $a) { $a = array_merge(self::$attachment_defaults, $a); $mail->add_attachment($a['content'], $a['filename'], $a['content_type'], $a['encoding']); } $this->reset(); return $mail; }
public function test_add_part() { $message = <<<EOT Date: Fri, 13 Feb 09 15:47:25 +0100 MIME-Version: 1.0 To: John Doe <*****@*****.**> Content-Type: multipart/alternative; boundary="c67476988f320ca04d61815bcfd14360" This is a multi-part message in MIME format. --c67476988f320ca04d61815bcfd14360 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit test --c67476988f320ca04d61815bcfd14360 Content-Type: text/calendar; charset="UTF-8" Content-Transfer-Encoding: quoted-printable BEGIN:VCALENDAR VERSION:2.0 CALSCALE:GREGORIAN METHOD:REQUEST BEGIN:VEVENT DTSTART:20090218T140000Z DTEND:20090218T153000Z DTSTAMP:20090217T160043Z ORGANIZER:mailto:john@doe.net SEQUENCE:0 STATUS:CONFIRMED SUMMARY:test END:VEVENT END:VCALENDAR --c67476988f320ca04d61815bcfd14360-- EOT; $mail = new SMail($this->date); $mail->add_to('*****@*****.**', 'John Doe'); $mail->set_text('test'); $mail->add_part(fopen(dirname(__FILE__).'/files/dummy.ics', 'r'), 'text/calendar', 'quoted-printable'); $mail->set_boundary('c67476988f320ca04d61815bcfd14360'); $this->assertEquals($message, (string) $mail); }