1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
def encrypt(text):
gpg = gnupg.GPG
encrypted_data = gpg.encrypt(text, 'monemail@...')
encrypted_string = str(encrypted_data)
if encrypted_data.ok:
return encrypted_string
else:
print 'status: ', encrypted_data.status
print 'stderr: ', encrypted_data.stderr
return None
def createSignature(msg):
# RFC3156 section 5 says line endings in the signed message
# must be canonical <CR><LF>.
text = re.sub(r'\r?\n', '\r\n', msg.as_string())
gpg = gnupg.GPG
signature = gpg.sign(text,detach=True,passphrase="*******************")
sig = MIMEText('')
sig.set_type('application/pgp-signature')
sig.set_charset(None)
sig.set_param('name', 'signature.asc')
sig.add_header('Content-Description', 'OpenPGP digital signature')
sig.add_header('Content-Disposition','attachment', filename='signature.asc')
print str(signature)
sig.set_payload(str(signature))
return sig
def sendMail(send_to, subject, text, xml):#files=[]):
payload = MIMEMultipart()
payload.set_param('protocol', 'application/pgp-signature')
payload.set_param('micalg', 'pgp-sha256') ####!!! GET THIS FROM KEY!
payload.preamble = 'This is an OpenPGP/MIME signed message.'
payload['From'] = "from@....."
payload['To'] = COMMASPACE.join(send_to)
payload['Date'] = formatdate(localtime = True)
payload['Subject'] = Header(subject, "utf-8")
payload.attach( MIMEText(text+"\n","plain", "utf-8") )
attachement = MIMEBase('application', "octet-stream")
attachement.set_payload( xml )
#encoders.encode_base64(attachement)
attachement.add_header('Content-Disposition', 'attachment; filename="test.xml"')
payload.attach(attachement)
# signature
payload.attach(createSignature(payload))
encrypted_mail=encrypt(payload.as_string())
# send mail
smtp = smtplib.SMTP("localhost", 25)
smtp.sendmail(payload['From'], send_to, encrypted_mail)
smtp.quit() |
Partager