: str = ...) -> _Reply: ...
    def ehlo(self, name: str = ...) -> _Reply: ...
    def has_extn(self, opt: str) -> bool: ...
    def help(self, args: str = ...) -> bytes: ...
    def rset(self) -> _Reply: ...
    def noop(self) -> _Reply: ...
    def mail(self, sender: str, options: Sequence[str] = ...) -> _Reply: ...
    def rcpt(self, recip: str, options: Sequence[str] = ...) -> _Reply: ...
    def data(self, msg: Union[bytes, str]) -> _Reply: ...
    def verify(self, address: str) -> _Reply: ...
    vrfy = verify
    def expn(self, address: str) -> _Reply: ...
    def ehlo_or_helo_if_needed(self) -> None: ...
    user: str
    password: str
    def auth(self, mechanism: str, authobject: _AuthObject, *, initial_response_ok: bool = ...) -> _Reply: ...
    @overload
    def auth_cram_md5(self, challenge: None = ...) -> None: ...
    @overload
    def auth_cram_md5(self, challenge: bytes) -> str: ...
    def auth_plain(self, challenge: Optional[bytes] = ...) -> str: ...
    def auth_login(self, challenge: Optional[bytes] = ...) -> str: ...
    def login(self, user: str, password: str, *, initial_response_ok: bool = ...) -> _Reply: ...
    def starttls(
        self, keyfile: Optional[str] = ..., certfile: Optional[str] = ..., context: Optional[SSLContext] = ...
    ) -> _Reply: ...
    def sendmail(
        self,
        from_addr: str,
        to_addrs: Union[str, Sequence[str]],
        msg: Union[bytes, str],
        mail_options: Sequence[str] = ...,
        rcpt_options: List[str] = ...,
    ) -> _SendErrs: ...
    def send_message(
        self,
        msg: _Message,
        from_addr: Optional[str] = ...,
        to_addrs: Optional[Union[str, Sequence[str]]] = ...,
        mail_options: List[str] = ...,
        rcpt_options: Sequence[str] = ...,
    ) -> _SendErrs: ...
    def close(self) -> None: ...
    def quit(self) -> _Reply: ...

class SMTP_SSL(SMTP):
    default_port: int = ...
    keyfile: Optional[str]
    certfile: Optional[str]
    context: SSLContext
    def __init__(
        self,
        host: str = ...,
        port: int = ...,
        local_hostname: Optional[str] = ...,
        keyfile: Optional[str] = ...,
        certfile: Optional[str] = ...,
        timeout: float = ...,
        source_address: Optional[_SourceAddress] = ...,
        context: Optional[SSLContext] = ...,
    ) -> None: ...

LMTP_PORT: int

class LMTP(SMTP):
    def __init__(
        self,
        host: str = ...,
        port: int = ...,
        local_hostname: Optional[str] = ...,
        source_address: Optional[_SourceAddress] = ...,
    ) -> None: ...
PK