1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10:
11:
12: namespace Nette\Mail;
13:
14: use Nette;
15:
16:
17:
18: 19: 20: 21: 22:
23: class SendmailMailer extends Nette\Object implements IMailer
24: {
25:
26: public $commandArgs;
27:
28:
29:
30: 31: 32: 33: 34:
35: public function send(Message $mail)
36: {
37: $tmp = clone $mail;
38: $tmp->setHeader('Subject', NULL);
39: $tmp->setHeader('To', NULL);
40:
41: $parts = explode(Message::EOL . Message::EOL, $tmp->generateMessage(), 2);
42:
43: Nette\Diagnostics\Debugger::tryError();
44: $res = mail(
45: str_replace(Message::EOL, PHP_EOL, $mail->getEncodedHeader('To')),
46: str_replace(Message::EOL, PHP_EOL, $mail->getEncodedHeader('Subject')),
47: str_replace(Message::EOL, PHP_EOL, $parts[1]),
48: str_replace(Message::EOL, PHP_EOL, $parts[0]),
49: (string) $this->commandArgs
50: );
51:
52: if (Nette\Diagnostics\Debugger::catchError($e)) {
53: throw new Nette\InvalidStateException('mail(): ' . $e->getMessage(), 0, $e);
54:
55: } elseif (!$res) {
56: throw new Nette\InvalidStateException('Unable to send email.');
57: }
58: }
59:
60: }
61: