slm/mail

Laminas\Mail中集成多种电子邮件服务提供商

v5.0.1 2024-09-02 10:22 UTC

README

Build Status Latest Stable Version Scrutinizer Code Quality

SlmMail是一个模块,可以与各种第三方API集成以发送邮件。提供了这些服务的API集成。它处理SMTP。

以下是当前支持的服务

安装

  1. 首先安装存储库

    composer require slm/mail

    • 对于Laminas MVC,请在您的application.config.php文件中添加SlmMail
    • 对于Mezzio,它应该提示我们是否想要自动配置。接受这个。
  2. 为了使用邮件服务,您现在需要对其进行配置。我们为每个邮件服务器提供了一个示例配置文件。

    将示例配置文件复制到您的autoload目录。例如,对于Mandrill,可以使用以下操作

    cp vendor/slm/mail/config/slm_mail.mandrill.local.php.dist config/autoload/slm_mail.mandrill.local.php

    请修改此文件中的虚拟内容。此文件将包含凭证。

使用方法

现在可以从服务管理器中检索依赖项。然后编写一条消息

$message = new \Laminas\Mail\Message();
$message
    ->setTo('send@to')
    ->setFrom('send@by')
    ->setSubject('Subject')
    ->setBody('Contents');

$mandrillService = $container->get(\SlmMail\Service\MandrillService::class);
$mandrillService->send($message);

文档

SlmMail的文档针对每个提供者分开

烹饪书

如何发送HTML电子邮件?

SlmMail中使用的每个电子邮件提供商都允许发送HTML电子邮件。但是,默认情况下,如果您使用setBody内容设置邮件内容,则此内容将被视为纯文本版本,如下所示

$message = new \Laminas\Mail\Message();

// This will be considered as plain text message, even if the string is valid HTML code
$message->setBody('Hello world');

要发送HTML版本,您必须将正文指定为MimeMessage,并添加HTML版本作为MIME部分,如下所示

$message = new \Laminas\Mail\Message();

$htmlPart = new \Laminas\Mime\Part('<html><body><h1>Hello world</h1></body></html>');
$htmlPart->type = "text/html";

$textPart = new \Laminas\Mime\Part('Hello world');
$textPart->type = "text/plain";

$body = new \Laminas\Mime\Message();
$body->setParts(array($textPart, $htmlPart));

$message->setBody($body);

出于可访问性的考虑,您应该始终提供邮件的文本和HTML版本。

带有附件的multipart/alternative电子邮件

正确编写包含文本、html 附件的电子邮件消息的方法是创建一个包含文本和html部分的multipart/alternative部分,后跟一个或多个附件部分。请参阅Laminas文档以获取完整示例。

如何配置HttpClient的http_options和http_adapter

默认适配器是Laminas\Http\Client\Adapter\Socket,但您可以在slm_mail.*.local.php中覆盖它,如下所示

'slm_mail' => array(
    // Here your email service provider options

    'http_adapter' => 'Laminas\Http\Client\Adapter\Proxy' // for example
)

如果您想更改适配器的某些选项,请参阅您适配器的类在这里,并在slm_mail.*.local.php中覆盖这些选项,如下所示

'slm_mail' => array(
    // Here your email service provider options

    // example for Socket adapter
    'http_options' => array(
        'sslverifypeer' => false,
        'persistent' => true,
    ),
)

我应该选择哪个提供商?

我们不会回答你:-)!每个提供者都有自己的功能集。你应该仔细阅读每个网站,以发现哪一个最适合你的需求。

要感谢谁?

Jurian SluimanMichaël Gallego 做了这个仓库的初始创建工作,并且长期维护。

目前由以下人员维护: