Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F93092400
PhabricatorApplicationMailReceiver.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Tue, Nov 26, 04:00
Size
2 KB
Mime Type
text/x-php
Expires
Thu, Nov 28, 04:00 (2 d)
Engine
blob
Format
Raw Data
Handle
22574133
Attached To
rPH Phabricator
PhabricatorApplicationMailReceiver.php
View Options
<?php
abstract
class
PhabricatorApplicationMailReceiver
extends
PhabricatorMailReceiver
{
private
$applicationEmail
;
private
$emailList
;
private
$author
;
abstract
protected
function
newApplication
();
final
protected
function
setApplicationEmail
(
PhabricatorMetaMTAApplicationEmail
$email
)
{
$this
->
applicationEmail
=
$email
;
return
$this
;
}
final
protected
function
getApplicationEmail
()
{
return
$this
->
applicationEmail
;
}
final
protected
function
setAuthor
(
PhabricatorUser
$author
)
{
$this
->
author
=
$author
;
return
$this
;
}
final
protected
function
getAuthor
()
{
return
$this
->
author
;
}
final
public
function
isEnabled
()
{
return
$this
->
newApplication
()->
isInstalled
();
}
final
public
function
canAcceptMail
(
PhabricatorMetaMTAReceivedMail
$mail
,
PhutilEmailAddress
$target
)
{
$viewer
=
$this
->
getViewer
();
$sender
=
$this
->
getSender
();
foreach
(
$this
->
loadApplicationEmailList
()
as
$application_email
)
{
$create_address
=
$application_email
->
newAddress
();
if
(!
PhabricatorMailUtil
::
matchAddresses
(
$create_address
,
$target
))
{
continue
;
}
if
(
$sender
)
{
$author
=
$sender
;
}
else
{
$author_phid
=
$application_email
->
getDefaultAuthorPHID
();
// If this mail isn't from a recognized sender and the target address
// does not have a default author, we can't accept it, and it's an
// error because you tried to send it here.
// You either need to be sending from a real address or be sending to
// an address which accepts mail from the public internet.
if
(!
$author_phid
)
{
throw
new
PhabricatorMetaMTAReceivedMailProcessingException
(
MetaMTAReceivedMailStatus
::
STATUS_UNKNOWN_SENDER
,
pht
(
'You are sending from an unrecognized email address to '
.
'an address which does not support public email ("%s").'
,
(
string
)
$target
));
}
$author
=
id
(
new
PhabricatorPeopleQuery
())
->
setViewer
(
$viewer
)
->
withPHIDs
(
array
(
$author_phid
))
->
executeOne
();
if
(!
$author
)
{
throw
new
Exception
(
pht
(
'Application email ("%s") has an invalid default author ("%s").'
,
(
string
)
$create_address
,
$author_phid
));
}
}
$this
->
setApplicationEmail
(
$application_email
)
->
setAuthor
(
$author
);
return
true
;
}
return
false
;
}
private
function
loadApplicationEmailList
()
{
if
(
$this
->
emailList
===
null
)
{
$viewer
=
$this
->
getViewer
();
$application
=
$this
->
newApplication
();
$this
->
emailList
=
id
(
new
PhabricatorMetaMTAApplicationEmailQuery
())
->
setViewer
(
$viewer
)
->
withApplicationPHIDs
(
array
(
$application
->
getPHID
()))
->
execute
();
}
return
$this
->
emailList
;
}
}
Event Timeline
Log In to Comment