I am trying to send an encrypted email with an attachment with PHP, however, my email is simply duplicated as plain text in an email client (in this case, MS Outlook). This is the code I use to send email:
$semi_rand = md5(time()); $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; $fileatt = "\path\to\attachment"; $headers = array(); $headers['From'] = $email_from; $headers['Subject'] = $email_subject; $headers['MIME-Version'] = "1.0"; $headers['Content-Type'] = "multipart/mixed; boundary=\"{$mime_boundary}\""; $file = fopen($fileatt,'rb'); $data = fread($file,filesize($fileatt)); $data = chunk_split(base64_encode($data)); fclose($file); //message part $email_message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type:text/html; charset=\"UTF-8\"\n" . "Content-Transfer-Encoding: 7bit\n\n Please find the file attached\n\n"; //file part $email_message .= "--{$mime_boundary}\n" . "Content-Type: {$fileatt_type};\n" . " name=\"{$fileatt_name}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n" . "--{$mime_boundary}--\n"; $mfile = fopen("msg.txt", "w"); fwrite($mfile, $email_message); fclose($mfile); $key = file_get_contents("mailcert.cer"); $encrypt = openssl_pkcs7_encrypt("msg.txt", "enc.txt", $key, $headers); if($encrypt){ $data = file_get_contents("enc.txt"); $parts = explode("\n\n", $data, 2); // Send mail $ok = mail($email_to, $email_subject, $parts[1], $parts[0]); }
The script works, the email is delivered and decrypted in Outlook, however the result looks something like this:
--==Multipart_Boundary_x6434b5a09f1f49c571a633802cd36772x Content-Type:text/html; charset="UTF-8" Content-Transfer-Encoding: 7bit Please find the file attached --==Multipart_Boundary_x6434b5a09f1f49c571a633802cd36772x Content-Type: application/octet-stream; name="1327490599scrippie.txt" Content-Transfer-Encoding: base64 JG9sZElwID0gIjE5NS40Ni4zOS43MyINCiRuZXdJcCA9ICIqIg0KDQojIEdldCBhbGwgb2JqZWN0 cyBhdCBJSVM6Ly9Mb2NhbGhvc3QvVzNTVkMNCiRpaXNPYmplY3RzID0gbmV3LW9iamVjdCBgDQog ICAgU3lzdGVtLkRpcmVjdG9yeVNlcnZpY2VzLkRpcmVjdG9yeUVudHJ5KCJJSVM6Ly9Mb2NhbGhv [etc....] --==Multipart_Boundary_x6434b5a09f1f49c571a633802cd36772x--
Is there any other way to send encrypted emails with attachments? Or is there a solution to this problem?
source share