mailer('cp_'.MailPurpose::SUPPORT); } public function envelope(): Envelope { [$from] = $this->mailboxAddresses(MailPurpose::SUPPORT); // Ohne eingerichtetes Postfach fällt beides auf die Absenderadresse des // Frameworks zurück. Eine Anfrage still verschwinden zu lassen, weil // niemand ein Postfach angelegt hat, wäre der teuerste Fehler auf dieser // Seite — sie ist der Grund, warum es die Seite gibt. $house = $from?->address ?: (string) config('mail.from.address'); return new Envelope( from: $from ?: new Address($house), to: [new Address($house)], // Antworten geht an den Fragenden. Das ist der ganze Zweck: der // Betreiber drückt „Antworten" und schreibt der Person, nicht sich. replyTo: [new Address($this->enquiry['email'], $this->enquiry['name'])], subject: $this->subjectLine(), ); } public function content(): Content { return new Content(view: 'mail.contact-request', with: [ 'enquiry' => $this->enquiry, ]); } private function subjectLine(): string { return self::subjectFor($this->enquiry); } /** * Der Betreff trägt, wonach gefragt wird, und von wem — beides in der * Postfachliste sichtbar, ohne die Mail zu öffnen. * * Öffentlich und statisch, weil ihn zwei brauchen: diese Mail und der * Eintrag im Posteingang der Konsole. Zwei Fassungen liefen auseinander, * und dann hieße dieselbe Anfrage an zwei Stellen verschieden. * * @param array{company: ?string, name: string, topic: ?string} $enquiry */ public static function subjectFor(array $enquiry): string { $who = $enquiry['company'] ?: $enquiry['name']; return ($enquiry['topic'] ?? null) === 'enterprise' ? 'Anfrage: eigene Maschine — '.$who : 'Anfrage über die Website — '.$who; } }