|
@@ 255-267 (lines=13) @@
|
| 252 |
|
$this->sendReply(250, "Hello {$this->getRemoteAddress()}"); |
| 253 |
|
} |
| 254 |
|
|
| 255 |
|
protected function handleMailFromCommand($arguments) |
| 256 |
|
{ |
| 257 |
|
|
| 258 |
|
// Parse the email. |
| 259 |
|
if (preg_match('/\<(?<email>.*)\>( .*)?/', $arguments, $matches) == 1) { |
| 260 |
|
$this->state = self::STATUS_FROM; |
| 261 |
|
$this->from = $matches['email']; |
| 262 |
|
$this->sendReply(250, "MAIL OK"); |
| 263 |
|
} else { |
| 264 |
|
$this->sendReply(500, "Invalid mail argument"); |
| 265 |
|
} |
| 266 |
|
|
| 267 |
|
} |
| 268 |
|
|
| 269 |
|
protected function handleQuitCommand($arguments) |
| 270 |
|
{ |
|
@@ 275-285 (lines=11) @@
|
| 272 |
|
|
| 273 |
|
} |
| 274 |
|
|
| 275 |
|
protected function handleRcptToCommand($arguments) { |
| 276 |
|
// Parse the recipient. |
| 277 |
|
if (preg_match('/^(?<name>.*?)\s*?\<(?<email>.*)\>\s*$/', $arguments, $matches) == 1) { |
| 278 |
|
// Always set to 3, since this command might occur multiple times. |
| 279 |
|
$this->state = self::STATUS_TO; |
| 280 |
|
$this->recipients[$matches['email']] = $matches['name']; |
| 281 |
|
$this->sendReply(250, "Accepted"); |
| 282 |
|
} else { |
| 283 |
|
$this->sendReply(500, "Invalid RCPT TO argument."); |
| 284 |
|
} |
| 285 |
|
} |
| 286 |
|
|
| 287 |
|
protected function handleStartDataCommand() |
| 288 |
|
{ |