slm / mail
Laminas\Mail中集成多种电子邮件服务提供商
Requires
- php: ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0
- laminas/laminas-http: ^2.8
- laminas/laminas-mail: ^2.9
- laminas/laminas-mime: ^2.8
- laminas/laminas-servicemanager: ^3.11
Requires (Dev)
- ext-json: *
- aws/aws-sdk-php: ^3.208.4
- doctrine/instantiator: ^1.3
- guzzlehttp/guzzle: ^7.4
- laminas/laminas-config: ^3.3
- laminas/laminas-i18n: ^2.10
- laminas/laminas-log: ^2.12
- laminas/laminas-modulemanager: ^2.8
- laminas/laminas-mvc: ^3.1
- laminas/laminas-serializer: ^2.9
- laminas/laminas-view: ^2.11
- phpunit/phpunit: ^9.6.5
- psr/container: ^1.0 || ^2.0
- squizlabs/php_codesniffer: ^3.5
Suggests
- aws/aws-sdk-php: If you need to use Amazon SES
- dev-master
- v5.0.1
- v5.0
- v4.7.0
- v4.7.0-alpha.2
- v4.7.0-alpha
- v4.6.0
- v4.5.2
- v4.5
- v4.5-beta
- v4.2.4
- v4.2.3
- v4.2.2
- v4.2.1
- v4.1.7
- v4.1.6
- v4.1.5
- v4.1.4
- v4.1.3
- v4.1.2
- v4.1
- v4.0
- v4.0-alpha
- v3.4
- v3.3
- v3.2
- v3.1
- v3.0
- v3.0-alpha
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.0
- v1.6.0
- v1.5.3
- v1.5.2
- v1.5.1
- v1.5.0
- v1.4.1
- v1.4.0
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.0
- v1.1.1
- v1.1.0
- v1.0.1
- v1.0.0
- v1.0.0-rc3
- v1.0.0-rc2
- v1.0.0-rc1
- dev-php8.3
- dev-feature/weaken-options-type
- dev-feature/correct-minimum-version
This package is auto-updated.
Last update: 2024-09-02 10:31:34 UTC
README
SlmMail是一个模块,可以与各种第三方API集成以发送邮件。提供了这些服务的API集成。它不处理SMTP。
以下是当前支持的服务
- Elastic Email(完整)
- Mailgun(完整)
- Postmark(完整)
- Postage(完整)
- Send Grid(几乎完整)
- Spark Post(几乎完整)
- Amazon SES(几乎完整,附件缺失)
- Mandrill(完整,但请不要使用此服务,因为Mailchimp / Mandrill没有积极维护此服务)
安装
-
首先安装存储库
composer require slm/mail
- 对于Laminas MVC,请在您的
application.config.php
文件中添加SlmMail
。 - 对于Mezzio,它应该提示我们是否想要自动配置。接受这个。
- 对于Laminas MVC,请在您的
-
为了使用邮件服务,您现在需要对其进行配置。我们为每个邮件服务器提供了一个示例配置文件。
将示例配置文件复制到您的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 Sluiman 和 Michaël Gallego 做了这个仓库的初始创建工作,并且长期维护。
目前由以下人员维护: