首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Nette邮件的DKIM

带有Nette邮件的DKIM
EN

Stack Overflow用户
提问于 2018-03-18 21:52:25
回答 1查看 205关注 0票数 1

我计划用php邮件签名(https://github.com/louisameline/php-mail-signature)对邮件进行签名,但在Nette消息类(https://api.nette.org/2.4/Nette.Mail.Message.html)中找不到设置DKIM-值的方法。

因为我认为这或多或少是基本的功能,所以我想知道是否真的不可能在Nette中使用DKIM。

有可能吗?如果有,我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-20 14:58:09

问题是,php-mail-signature太低了.它将签名头返回为字符串。您需要解析$signature->get_signed_headers()输出并为每个输出调用$message->setHeader()。如果您正在寻找某种神奇的方法$message->setDkimSignature(),您将找不到它。但是,您可以从Message类继承并编写自己的类。

这只是一个未经测试的例子:

代码语言:javascript
复制
<?php

use mail_signature;
use Nette\Mail\Message;

final class DkimSignedMessage extends Message
{
    /**
     * @var mail_signature
     */
    private $signature;

    public function __construct(mail_signature $signature)
    {
        $this->signature = $signature;
    }

    public function generateMessage(): string
    {
        $message = $this->build();
        $signedHeaders = $this->signature->get_signed_headers(
            $message->getTo(),
            $message->getSubject(),
            $message->getBody(),
            implode("\r\n", $message->getHeaders())
        );

        foreach (explode("\r\n", trim($signedHeaders)) as $header) {
            [$name, $value] = explode(': ', $header);
            $message->setHeader($name, trim($value))
        }

        return $message->getEncodedMessage();
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49353195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档