I'm able to send mail using drupal_mail with the following code

drupal_mail('custom_module', 'custom_key', $email, language_default(), $params,'from@email.com');
  

My hook mail is written like this

function custom_module_mail($key, &$message, $params) {
  $feedback = $params['result_id']; // feedback contains HTML elements
  
  switch ($key) {
    case 'custom_key':
      $message['subject'] = 'Your feedback on the survey ';
      $message['body'][] = $feedback;
      break;
  }

However when I try to open the message in my inbox it is not showing email body, but it is showing the email is unencrypted with the icon. Also when I look at the mail details, it points to learn more with following https://support.google.com/mail/answer/6330403?visit_id=1-63621632940261...

How can I ensure that mail I have sent is encrypted?

Comments

Jaypan’s picture

You need to send your mail as an authenticated mail, and use either TLS or... I can't think of the other encryption name right now. If you send mail using port 25 or 26, it is not encrypted.

The SMTP module is good for this, it allows you to configure your mail connection.

sprite’s picture

The nature of a GPG/PGP mime mail message should be transparent to the mail system itself.

It should just be a block of message body text to the SMTP system.

Your custom module would need to use GNU GPG code to construct the mail message and then insert the encrypted mail body into the message being constructed.

Of course, constructing a PGP/GPG mime message means your system needs to provide a private sender key and one or more public recipient keys during message build time.

If you get this figured out, it would make a great generalized module for the entire Drupal universe.

A PGP/GPG message body looks like the following to the SMTP transport:



--dAOpBK97x03bOH7kBKP91wAWfrbgq8s4w
Content-Type: application/pgp-encrypted
Content-Description: PGP/MIME version identification


--dAOpBK97x03bOH7kBKP91wAWfrbgq8s4w
Content-Type: application/octet-stream; name="encrypted.asc"
Content-Description: OpenPGP encrypted message
Content-Disposition: inline; filename="encrypted.asc"


-----BEGIN PGP MESSAGE-----
Version: GnuPG v2

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
=AsfN
-----END PGP MESSAGE-----



spritefully yours
Technical assistance provided to the Drupal community on my own time ...
Thank yous appreciated ...

macdev_drupal’s picture

It makes use of the core drupal contact form an is rather limited and a bit outdated but the principles still work:

https://www.drupal.org/project/pgp_contact

Further there is Webform_Encrypt which extends Webform by encryption https://www.drupal.org/project/webform_encrypt

Both could be a starting point.

If you want client side encryption you should follow the pgp_contact way.