1: <?php
2:
3: 4: 5: 6:
7:
8: namespace Nette\Mail;
9:
10: use Nette;
11:
12:
13: 14: 15:
16: class SendmailMailer implements IMailer
17: {
18: use Nette\SmartObject;
19:
20:
21: public $commandArgs;
22:
23:
24: 25: 26: 27: 28:
29: public function send(Message $mail)
30: {
31: if (!function_exists('mail')) {
32: throw new SendException('Unable to send email: mail() has been disabled.');
33: }
34: $tmp = clone $mail;
35: $tmp->setHeader('Subject', null);
36: $tmp->setHeader('To', null);
37:
38: $parts = explode(Message::EOL . Message::EOL, $tmp->generateMessage(), 2);
39:
40: $args = [
41: str_replace(Message::EOL, PHP_EOL, $mail->getEncodedHeader('To')),
42: str_replace(Message::EOL, PHP_EOL, $mail->getEncodedHeader('Subject')),
43: str_replace(Message::EOL, PHP_EOL, $parts[1]),
44: str_replace(Message::EOL, PHP_EOL, $parts[0]),
45: ];
46: if ($this->commandArgs) {
47: $args[] = (string) $this->commandArgs;
48: }
49: $res = Nette\Utils\Callback::invokeSafe('mail', $args, function ($message) use (&$info) {
50: $info = ": $message";
51: });
52: if ($res === false) {
53: throw new SendException("Unable to send email$info.");
54: }
55: }
56: }
57: