aboutsummaryrefslogtreecommitdiff
path: root/lib/classes/StudipDebugTransport.php
blob: 6d740a66047d9302d8b25a531bbe2ee83ee42f67 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php

use Symfony\Component\Mailer\SentMessage;
use Symfony\Component\Mailer\Transport\AbstractTransport;
use Symfony\Component\Mime\Email;

class StudipDebugTransport extends AbstractTransport
{
    private string $logfile;

    public function __construct(string $logfile)
    {
        parent::__construct();
        $this->logfile = $logfile;
    }

    protected function doSend(SentMessage $message): void
    {
        $email = $message->getOriginalMessage();

        if (!$email instanceof Email) {
            return;
        }

        $username = $GLOBALS['user']->username ?? 'unknown';

        $entry  = "\n-- " . date('d.m.Y H:i:s') . " " . $username;
        $entry .= "\nTo: " . implode(', ', array_map(fn($a) => $a->toString(), $email->getTo()));
        $entry .= "\nSubject: " . $email->getSubject();


        $headers = '';
        foreach ($email->getHeaders()->all() as $header) {
            $headers .= $header->toString() . "\n";
        }

        if (strlen(trim($headers))) {
            $entry .= "\n" . $headers;
        }

        $entry .= "\n";

        if ($email->getTextBody()) {
            $entry .= $email->getTextBody();
        } elseif ($email->getHtmlBody()) {
            $entry .= $email->getHtmlBody();
        }

        $entry .= "\n";

        file_put_contents($this->logfile, $entry, FILE_APPEND);
    }

    public function __toString(): string
    {
        return 'studip-debug://default';
    }
}