Compare commits
No commits in common. "8755e0e1cc81b761f2cb291f2fa25f6162df8482" and "61120dd4e85422d01eccb67a3324c09916a0ea99" have entirely different histories.
8755e0e1cc
...
61120dd4e8
2 changed files with 1 additions and 30 deletions
7
.gitignore
vendored
7
.gitignore
vendored
|
@ -1,9 +1,4 @@
|
||||||
venv/
|
venv/
|
||||||
__pycache__/
|
|
||||||
.idea/
|
.idea/
|
||||||
# misc testing scripts
|
testing.py
|
||||||
testing*.py
|
|
||||||
# i have a symlink here so testing scripts can import gpgmymail
|
|
||||||
# as python expects `import gpgmymail` to be importing `gpgmymail.py`
|
|
||||||
gpgmymail.py
|
|
||||||
|
|
||||||
|
|
24
gpgmymail
24
gpgmymail
|
@ -49,26 +49,6 @@ def is_message_encrypted(message: email.message.Message) -> bool:
|
||||||
|
|
||||||
return message.get_content_subtype() == "encrypted"
|
return message.get_content_subtype() == "encrypted"
|
||||||
|
|
||||||
def decode_email(message: email.message.Message) -> email.message.Message:
|
|
||||||
"""Turn a quoted-printable or base64 encoded email into a 7or8bit encoded
|
|
||||||
email
|
|
||||||
|
|
||||||
:param message: email.message.Message to be decoded
|
|
||||||
:return: decoded email.message.Message"""
|
|
||||||
if message.is_multipart():
|
|
||||||
payload = []
|
|
||||||
for part in message.walk():
|
|
||||||
if not part.is_multipart():
|
|
||||||
payload.append(part.get_payload(decode=True))
|
|
||||||
|
|
||||||
message.set_payload(payload)
|
|
||||||
else:
|
|
||||||
message.set_payload(message.get_payload(decode=True))
|
|
||||||
|
|
||||||
message["Content-Transfer-Encoding"] = "7bit"
|
|
||||||
|
|
||||||
return message
|
|
||||||
|
|
||||||
def encrypt(
|
def encrypt(
|
||||||
message: email.message.Message,
|
message: email.message.Message,
|
||||||
recipients: typing.List[str],
|
recipients: typing.List[str],
|
||||||
|
@ -87,15 +67,11 @@ def encrypt(
|
||||||
|
|
||||||
:return: The encrypted email as a string"""
|
:return: The encrypted email as a string"""
|
||||||
|
|
||||||
# exclusion criteria:
|
|
||||||
# some mail clients like Thunderbird don't like twice-encrypted emails,
|
# some mail clients like Thunderbird don't like twice-encrypted emails,
|
||||||
# so we return the message as-is if it's already encrypted
|
# so we return the message as-is if it's already encrypted
|
||||||
if is_message_encrypted(message) and not unconditionally_encrypt:
|
if is_message_encrypted(message) and not unconditionally_encrypt:
|
||||||
return message.as_string()
|
return message.as_string()
|
||||||
|
|
||||||
# make necessary changes to message
|
|
||||||
message = decode_email(message)
|
|
||||||
|
|
||||||
gpg = gnupg.GPG()
|
gpg = gnupg.GPG()
|
||||||
gpg.encoding = encoding
|
gpg.encoding = encoding
|
||||||
encrypted_content = gpg.encrypt(message.as_string(), recipients, armor=True)
|
encrypted_content = gpg.encrypt(message.as_string(), recipients, armor=True)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue