GDPR:n myötä plaintext sähköposteissa ei saa lähettää enää henkilötietoja. Esimerkiksi webbisivulla html lomakkeella kerätyt tiedot lähetetään toisinaan sähköpostilla eteenpäin. Nyt postit pitää kryptata. Edullinen tapa sähköpostin salaamiseen on pgp-salaus.
Ensiksi luodaan vastaanottajalle avainpari. Asennetaan Enigmail laajennus.
Sitten luodaan lähettäjälle avainpari
blah blah...
<php
// Install depencies
// sudo apt-get install php-gnupg php-mail
// Include mail extension
require_once "Mail.php";
// Set PGP keyring
putenv('GNUPGHOME=/var/www/html/forms/.gnupg');
// create new GnuPG object
$gpg = new gnupg();
// throw exception if error occurs
$gpg->seterrormode(gnupg::ERROR_EXCEPTION);
// recipient's email address
$recipient = 'forms.receiver@example.org';
// plaintext message
$plaintext = "Hello,\nThis is gnupg encrypted email.\n";
try {
// find key matching email address
$gpg->addencryptkey($recipient);
// encrypt plaintext message
$ciphertext = $gpg->encrypt($plaintext);
// SMTP mail sender and subject
$from = "www-form data <www-form@www.example.org>";
$subject = "www-form pgp-encrypted data";
// SMTP-server auth
$smtp_host = "smtp.example.org";
$smtp_username = "myusername";
$smtp_password = "mypassword";
// Send email
$headers = array ('From' => $from, 'To' => $recipient, 'Subject' => $subject, 'Content-Type' => 'text/plain; charset=UTF-8');
$smtp = Mail::factory('smtp', array ('host' => $smtp_host, 'auth' => true, 'username' => $smtp_username, 'password' => $smtp_password));
$mail = $smtp->send($recipient, $headers, $ciphertext);
if (PEAR::isError($mail)) {
echo($mail->getMessage());
} else {
echo("Message successfully sent!\n");
}
} catch (Exception $e) {
die('ERROR: ' . $e->getMessage());
}
?>