diff --git a/gpgmymail b/gpgmymail index 4d78d91..e7c6073 100755 --- a/gpgmymail +++ b/gpgmymail @@ -77,31 +77,6 @@ def decode_email(message: email.message.Message) -> email.message.Message: # then find and replaces in decoded_bytes the b64 payload # with the decoded payload # lol - - def decode_b64_part( - part: email.message.Message, - decoded_bytes: bytes, - most_recent_boundary: str = None - ) -> bytes: - if part.get("Content-Transfer-Encoding") == "base64": - b64_str = part.get_payload() - # remove the boundary as we don't want to change this - if most_recent_boundary: - b64_str = b64_str.replace(most_recent_boundary, "") - # sometimes we have leftover hyphens from a boundary, so strip: - # hyphens not in base64 so we know not to use them - # strip whitespace first - b64_str = b64_str.strip() - b64_str = b64_str.strip('-') - b64_str = b64_str.encode() # turn into bytes-like object - # this will also decode the boundary so there'll be some nonsese - # chars at end of email but it's nbd - decoded_b64_str = part.get_payload(decode=True) - return decoded_bytes.replace( - b64_str, - decoded_b64_str - ) - quopri_decoded_message = email.message_from_bytes(decoded_bytes) if quopri_decoded_message.is_multipart(): most_recent_boundary = None @@ -110,17 +85,24 @@ def decode_email(message: email.message.Message) -> email.message.Message: if part.is_multipart() and part.get_boundary(): most_recent_boundary = part.get_boundary() else: - decoded_bytes = decode_b64_part( - part, - decoded_bytes, - most_recent_boundary - ) + if part.get("Content-Transfer-Encoding") == "base64": + b64_str = part.get_payload() + # remove the boundary as we don't want to change this + b64_str = b64_str.replace(most_recent_boundary, "") + # sometimes we have leftover hyphens from a boundary, so strip: + # hyphens not in base64 so we know not to use them + # strip whitespace first + b64_str = b64_str.strip() + b64_str = b64_str.strip('-') + b64_str = b64_str.encode() # turn into bytes-like object + decoded_b64_str = part.get_payload(decode=True) + decoded_bytes = decoded_bytes.replace( + b64_str, + decoded_b64_str + ) else: - decoded_bytes = decode_b64_part( - quopri_decoded_message, - decoded_bytes, - None - ) + # TODO + pass decoded_bytes = decoded_bytes.replace( b'Content-Transfer-Encoding: base64',