Skip to content

Commit aeab2d3

Browse files
committed
Merge branch 'dev3x'
2 parents 576c857 + 0a4c54b commit aeab2d3

File tree

2 files changed

+66
-1
lines changed

2 files changed

+66
-1
lines changed

composer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ddrv/mailer",
3-
"version":"3.0.0-beta",
3+
"version":"3.0.0",
44
"require":{
55
"php":">=5.3.0",
66
"ext-mbstring": "*"

src/Transport/File.php

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php
2+
3+
namespace Ddrv\Mailer\Transport;
4+
5+
use Ddrv\Mailer\Message;
6+
7+
final class File implements TransportInterface
8+
{
9+
/**
10+
* @var callable
11+
*/
12+
private $logger;
13+
14+
/**
15+
* @var string
16+
*/
17+
private $dir;
18+
19+
/**
20+
* @var string
21+
*/
22+
private $sender;
23+
24+
public function __construct($sender, $dir)
25+
{
26+
$this->sender = $sender;
27+
if (!is_dir($dir)) mkdir($dir, 0775, true);
28+
$this->dir = $dir;
29+
}
30+
31+
public function send(Message $message, $recipients)
32+
{
33+
$content = "{$message->getHeadersLine()}\r\n\r\n{$message->getBody()}";
34+
if (is_callable($this->logger)) {
35+
$logger = $this->logger;
36+
$logger($content);
37+
}
38+
foreach ($recipients as $email) {
39+
$arr = explode("@", $email);
40+
$user = $arr[0];
41+
$host = $arr[1];
42+
$dir = implode(DIRECTORY_SEPARATOR, array($this->dir, $host, $user));
43+
if (!is_dir($dir)) mkdir($dir, 0775, true);
44+
$num = 1;
45+
do {
46+
$prefix = "mail_" . date(DATE_ATOM);
47+
$suffix = str_pad($num, 3, "0", STR_PAD_LEFT);
48+
$file = implode(DIRECTORY_SEPARATOR, array($dir, "{$prefix}_{$suffix}.eml"));
49+
$num++;
50+
} while (is_file($file));
51+
file_put_contents($file, $content);
52+
}
53+
return true;
54+
}
55+
56+
public function getSender()
57+
{
58+
return $this->sender;
59+
}
60+
61+
public function setLogger(callable $logger)
62+
{
63+
$this->logger = $logger;
64+
}
65+
}

0 commit comments

Comments
 (0)