diff --git a/gpgmymail b/gpgmymail index ad5fe67..f9b4308 100755 --- a/gpgmymail +++ b/gpgmymail @@ -223,7 +223,8 @@ def encrypt( *, unconditionally_encrypt: bool = False, encoding: str = DEFAULT_ENCODING, - ignore_errors: bool = False + ignore_errors: bool = False, + decode_before_encrypting: bool = False ) -> str: """Encrypt given message @@ -262,13 +263,14 @@ def encrypt( # make necessary changes to message # this function is quite clunky and seems to throw exceptions from time to # time; if we can't make the necessary changes we want to just continue - try: - message = decode_email(message) - except Exception as e: - if ignore_errors: - pass - else: - raise e + if decode_before_encrypting: + try: + message = decode_email(message) + except Exception as e: + if ignore_errors: + pass + else: + raise e gpg = gnupg.GPG() gpg.encoding = encoding @@ -331,6 +333,8 @@ def main() -> None: help="Encrypt mail unconditionally. By default, mail is not encrypted if it is already encrypted.") parser.add_argument('--ignore-errors', action="store_true", help="Ignore errors at certain error-prone points of the script.") + parser.add_argument('--decode', action="store_true", + "Attempt to decode quoted-printable and base64 parts to latin-1 before encrypting a message") parser.add_argument('recipient', nargs='*', help="Key ID or email of keys to encrypt for") args = parser.parse_args() @@ -344,7 +348,8 @@ def main() -> None: args.recipient, unconditionally_encrypt=args.unconditional, encoding=args.encoding, - ignore_errors=args.ignore_errors + ignore_errors=args.ignore_errors, + decode_before_encrypting=args.decode )) if __name__ == '__main__':