jv-conseil/dkim-php-mail-signature

🔏 独立的DKIM类,用于使用2048位私钥(使用SHA-256算法散列)签名您的电子邮件。

v1.2.6 2023-03-27 20:57 UTC

This package is auto-updated.

Last update: 2024-09-25 15:29:39 UTC


README

Packagist Version Packagist Dependency Version visitors License EUPL 1.2 Become a sponsor to JV-conseil Follow JV conseil on StackOverflow Follow JVconseil on Twitter Follow JVconseil on Mastodon Follow JV conseil on GitHub

🔏 独立的DKIM类,用于使用2048位私钥(使用SHA-256算法散列)签名您的电子邮件。

DkimPhpMailSignature

使用方法

示例行,导入到您的邮件代码中,以开始使用DKIM签名

require_once __DIR__ . '/../vendor/autoload.php' ; // Autoload files using Composer autoload
use JVconseil\DkimPhpMailSignature\DKIMsign ;
use JVconseil\DkimPhpMailSignature\DKIMconfig ;

// init
$config = new DKIMconfig('/www/inc/config/jv-conseil/dkim-php-mail-signature/config.inc.php') ;
$sign = new DKIMsign(
 $config->private_key,
 $config->passphrase,
 $config->domain,
 $config->selector
) ;

// sign
$signed_headers = $sign->get_signed_headers($to, $subject, $message, $headers) ;

// send email
mail($to, $subject, $message, $signed_headers.$headers) ;

安装

逐步指南,用于生成您的加密密钥并通过DNS记录填充它们。

安装与加载

DkimPhpMailSignature可在Packagist上找到(使用语义版本控制),通过Composer安装DkimPhpMailSignature是推荐的方式。只需将此行添加到您的composer.json文件中

"jv-conseil/dkim-php-mail-signature": "^1.0"

或运行

composer require jv-conseil/dkim-php-mail-signature

请注意,vendor文件夹和vendor/autoload.php脚本是由Composer生成的;它们不是DkimPhpMailSignature的一部分。

创建配置文件的副本

在开始之前,您应该复制文件夹config/并将其存储在您的网站的非公开区域(例如)Composer仓库外部:

/www/inc/config/jv-conseil/dkim-php-mail-signature/

如果不这样做,将来Composer更新可能会导致您丢失所有设置。

生成您的公钥和私钥加密密钥

在终端中输入以下命令行以在config/文件夹的路径下开始工作

cd /www/inc/config/jv-conseil/dkim-php-mail-signature/

在终端中输入以下命令行以生成一个新的私钥2048位加密密钥

openssl genrsa -des3 -out private.pem 2048

输入您的密码短语,并保存它以在下一步中编辑config.inc.php文件。

然后检索您的公钥

openssl rsa -in private.pem -out public.pem -outform PEM -pubout

如果它们在密钥创建过程中引起冲突,您可以删除存储在config/文件夹中的两个原始*.pem文件密钥。

使用新的DKIM记录编辑您的DNS

访问您的注册商界面(例如:OVH.com)并创建一个新的DKIM记录来声明您的公钥

selector._domainkey  IN TXT  ( "v=DKIM1;k=rsa;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ekggNf9vuzzL4SlVc8QZyyqbEwR5bVTPC9cEZ8hFqTKOc7go180n3RZilYJZvveaxBkLCVJSTQaMPtKuSptY5au6Pi3AkFlizzhUJ80+0zgZXSGx7gfbginbRwhD+XdGOe9NXpo0PfrD6dEJ49Ytx4/nHB0TKiL227C0kGWb7RfWTVWccgJq4+kQb4l+4" "oDU5rGomSYK+zmMV13QTSETcJnoXhmjoJ30omyJfEXAsK5Ny0LJo8rWCucLD31BxHrM9/+M/Ye+TWxcrD2mRh5Jxqcnyj00/7kCnWeGPTftVKkAJBP3JMRqCNShLUchLhaz0qeXUtxAe9dx7ltr8042QIDAQAB;" )

DKIM与SPFDMARC记录配合使用效果更好,您还应该考虑编辑它们。

3600     IN TXT  "v=spf1 include:_spf.google.com ~all"
_dmarc   IN TXT  "v=DMARC1; p=quarantine; rua=mailto:me@yourdomain.name"

进一步阅读

编辑您的配置文件

config/config.sample.inc.php下,您将找到一个配置文件示例,以帮助您设置自己的详细信息。

现在,您可以在文件名中删除.sample并开始编辑它

  • 域名:您的域名,例如:google.com
  • 选择器:在您的DKIM DNS记录中使用的选择器,例如:selector._domainkey.MAIL_DKIM_DOMAIN
  • 密码短语:用于生成密钥的密码短语,例如:myPassPhrase。
  • ...其他参数可以省略。

简单使用

示例行,导入到您的邮件代码中,以开始使用DKIM签名

require_once __DIR__ . '/../vendor/autoload.php' ; // Autoload files using Composer autoload
use JVconseil\DkimPhpMailSignature\DKIMsign ;
use JVconseil\DkimPhpMailSignature\DKIMconfig ;

// init
$config = new DKIMconfig('/www/inc/config/jv-conseil/dkim-php-mail-signature/config.inc.php') ;

// set: this calls __set()
$config->domain = "mynewdomain.name" ;

// get: this calls __get()
$config->domain ; // => "mynewdomain.name" ;

介绍DKIMmail类

📬 独立类,用于使用2048位私钥(使用SHA-256算法散列)发送DKIM签名的电子邮件。

// init
$mail = new DKIMmail('/www/inc/config/jv-conseil/dkim-php-mail-signature/config.inc.php') ;

// parameters
$mail->from    = "Sender" <sender@yourdomain.com> ;
$mail->to      = "Recipient" <recipient@yourdomain.com> ;
$mail->subject = "Your Mail Subject" ;
$mail->body    = "Your Mail Message." ;
$mail->attach("/path/to/your/attachment.jpg", "NameOfYourAttachment.jpg") ;

// send!
$mail->send() ;

文档

文档可在线上找到,尽管它可能不完全是最新的,或者与您的版本不完全匹配。

您可以通过在此项目的顶层文件夹中运行phpdoc来生成API文档,并将文档生成在此文件夹中

php ~/vendor/bin/phpdoc -d ~/dkim-php-mail-signature/ -t ~/dkim-php-mail-signature/docs/

您需要安装phpDocumentor

赞助

如果这个项目帮助您缩短了开发时间,您可以给我一杯咖啡 ☕️ :-)

Become a sponsor to JV-conseil