@@ -181,7 +181,7 @@ def __setitem__(self, name: str, val: str) -> None:
181181 name , val = forbid_multi_line_headers (name , val , self .encoding )
182182 MIMEText .__setitem__ (self , name , val )
183183
184- def set_payload (
184+ def set_payload ( # type: ignore[override]
185185 self , payload : str , charset : str | Charset .Charset | None = None
186186 ) -> None :
187187 if charset == "utf-8" and not isinstance (charset , Charset .Charset ):
@@ -349,11 +349,10 @@ def attach(
349349 elif content is None :
350350 raise ValueError ("content must be provided." )
351351 else :
352- mimetype = (
353- mimetype
354- or mimetypes .guess_type (filename )[0 ]
355- or DEFAULT_ATTACHMENT_MIME_TYPE
356- )
352+ if filename is not None and mimetype is None :
353+ mimetype = mimetypes .guess_type (filename )[0 ]
354+ if mimetype is None :
355+ mimetype = DEFAULT_ATTACHMENT_MIME_TYPE
357356 basetype , subtype = mimetype .split ("/" , 1 )
358357
359358 if basetype == "text" :
@@ -434,6 +433,7 @@ def _create_mime_attachment(
434433 else :
435434 # Encode non-text attachments with base64.
436435 attachment = MIMEBase (basetype , subtype )
436+ assert isinstance (content , bytes ), "Non-text attachments must be bytes"
437437 attachment .set_payload (content )
438438 Encoders .encode_base64 (attachment )
439439 return attachment
0 commit comments