MCPcopy Create free account
hub / github.com/RT-Thread/env-windows / smtp_MAIL

Method smtp_MAIL

tools/python-3.11.9-amd64/Lib/smtpd.py:516–568  ·  view source on GitHub ↗
(self, arg)

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls 10

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

Tested by

no test coverage detected