@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.)
hq.recaptime.dev/wiki/Phorge
phorge
phabricator
1<?php
2
3final class PasteCreateMailReceiver
4 extends PhabricatorApplicationMailReceiver {
5
6 protected function newApplication() {
7 return new PhabricatorPasteApplication();
8 }
9
10 protected function processReceivedMail(
11 PhabricatorMetaMTAReceivedMail $mail,
12 PhutilEmailAddress $target) {
13 $author = $this->getAuthor();
14
15 $title = $mail->getSubject();
16 if (!$title) {
17 $title = pht('Email Paste');
18 }
19
20 $xactions = array();
21
22 $xactions[] = id(new PhabricatorPasteTransaction())
23 ->setTransactionType(PhabricatorPasteContentTransaction::TRANSACTIONTYPE)
24 ->setNewValue($mail->getCleanTextBody());
25
26 $xactions[] = id(new PhabricatorPasteTransaction())
27 ->setTransactionType(PhabricatorPasteTitleTransaction::TRANSACTIONTYPE)
28 ->setNewValue($title);
29
30 $paste = PhabricatorPaste::initializeNewPaste($author);
31
32 $content_source = $mail->newContentSource();
33
34 $editor = id(new PhabricatorPasteEditor())
35 ->setActor($author)
36 ->setContentSource($content_source)
37 ->setContinueOnNoEffect(true);
38 $xactions = $editor->applyTransactions($paste, $xactions);
39
40 $mail->setRelatedPHID($paste->getPHID());
41
42 $sender = $this->getSender();
43 if (!$sender) {
44 return;
45 }
46
47 $subject_prefix = pht('[Paste]');
48 $subject = pht('You successfully created a paste.');
49 $paste_uri = PhabricatorEnv::getProductionURI($paste->getURI());
50 $body = new PhabricatorMetaMTAMailBody();
51 $body->addRawSection($subject);
52 $body->addTextSection(pht('PASTE LINK'), $paste_uri);
53
54 id(new PhabricatorMetaMTAMail())
55 ->addTos(array($sender->getPHID()))
56 ->setSubject($subject)
57 ->setSubjectPrefix($subject_prefix)
58 ->setFrom($sender->getPHID())
59 ->setRelatedPHID($paste->getPHID())
60 ->setBody($body->render())
61 ->saveAndSend();
62 }
63
64}