MCPcopy Index your code
hub / github.com/python/cpython / smtp_MAIL

Method smtp_MAIL

Lib/test/support/smtpd.py:504–556  ·  view source on GitHub ↗
(self, arg)

Source from the content-addressed store, hash-verified

502 self.push('501 Syntax: VRFY <address>')
503
504 def smtp_MAIL(self, arg):
505 if not self.seen_greeting:
506 self.push('503 Error: send HELO first')
507 return
508 print('===> MAIL', arg, file=DEBUGSTREAM)
509 syntaxerr = '501 Syntax: MAIL FROM: <address>'
510 if self.extended_smtp:
511 syntaxerr += ' [SP <mail-parameters>]'
512 if arg is None:
513 self.push(syntaxerr)
514 return
515 arg = self._strip_command_keyword('FROM:', arg)
516 address, params = self._getaddr(arg)
517 if not address:
518 self.push(syntaxerr)
519 return
520 if not self.extended_smtp and params:
521 self.push(syntaxerr)
522 return
523 if self.mailfrom:
524 self.push('503 Error: nested MAIL command')
525 return
526 self.mail_options = params.upper().split()
527 params = self._getparams(self.mail_options)
528 if params is None:
529 self.push(syntaxerr)
530 return
531 if not self._decode_data:
532 body = params.pop('BODY', '7BIT')
533 if body not in ['7BIT', '8BITMIME']:
534 self.push('501 Error: BODY can only be one of 7BIT, 8BITMIME')
535 return
536 if self.enable_SMTPUTF8:
537 smtputf8 = params.pop('SMTPUTF8', False)
538 if smtputf8 is True:
539 self.require_SMTPUTF8 = True
540 elif smtputf8 is not False:
541 self.push('501 Error: SMTPUTF8 takes no arguments')
542 return
543 size = params.pop('SIZE', None)
544 if size:
545 if not size.isdigit():
546 self.push(syntaxerr)
547 return
548 elif self.data_size_limit and int(size) > self.data_size_limit:
549 self.push('552 Error: message size exceeds fixed maximum message size')
550 return
551 if len(params.keys()) > 0:
552 self.push('555 MAIL FROM parameters not recognized or not implemented')
553 return
554 self.mailfrom = address
555 print('sender:', self.mailfrom, file=DEBUGSTREAM)
556 self.push('250 OK')
557
558 def smtp_RCPT(self, arg):
559 if not self.seen_greeting:

Callers

nothing calls this directly

Calls 9

pushMethod · 0.95
_getaddrMethod · 0.95
_getparamsMethod · 0.95
isdigitMethod · 0.80
splitMethod · 0.45
upperMethod · 0.45
popMethod · 0.45
keysMethod · 0.45

Tested by

no test coverage detected