wedeto/mail

Wedeto平台 - SMTP邮件发送器

v1.0.1 2020-12-22 13:36 UTC

This package is auto-updated.

Last update: 2024-09-22 21:20:10 UTC


README

Mail是一个使用SMTP服务器发送邮件的类。它是从Zend\Mail派生出来的,这也是为什么它使用的是New BSD许可证而不是像Wedeto的其他部分那样使用MIT许可证。

特性

  • 使用SMTP发送消息
  • 使用SSL或TLS加密
  • 使用PLAIN、LOGIN或CRAM-MD5进行认证
  • 发送简单的文本消息,或使用Mime构建复杂消息
  • 创建嵌入图像和附件的HTML电子邮件的简单接口

与Zend\Mime的区别

Wedeto\Mail\Mime是从Zend\Mime派生出来的。其功能已被扩展以使其更容易使用。Wedeto\Mail\Mime\Message本身现在可以作为Mime多部分消息的一部分添加,以创建嵌套的Mime结构。

这反过来允许您发送包含附件、嵌入图像和文本/HTML备选方案的邮件。

与Zend\Mail的区别

Wedeto\Mail是从Zend\Mail派生出来的。然而,它已经发生了根本性的变化。删除了对Zend框架其他部分的所有依赖。此外,还删除了对其他传输协议的支持。Wedeto\Mail的目标是轻量级和功能性强,而不是作为创建网络邮件应用的构建块。因此,删除了对IMAP和POP的支持。

还删除了对其他传输方式(如Sendmail和PHP的mail函数)的支持。当Sendmail可用时,通常在localhost上也有一个SMTP服务器,因此它是多余的。PHP的mail函数根本不应该使用,因为它效率低下且不灵活。

Wedeto\Mail不支持从现有的邮件消息创建Wedeto\Mail\Message。由于删除了所有POP和IMAP支持,这不再必要。这允许删除复杂的头部解析情况,并将头部存储在更简单的结构中。

添加了一个新类,Wedeto\Mail\HTMLMessage。这简化了包含HTML部分、文本部分、附件和嵌入图像的消息的构建,以创建如下结构:

HTMLMessage

  • 消息容器(Wedeto\Mail\Mime\Message)
    • 纯文本(Wedeto\Mail\Mime\Part)
    • HTML容器(Wedeto\Mail\Mime\Message)
      • HTML消息(Wedeto\Mail\Mime\Part)
      • 嵌入图像2(Wedeto\Mail\Mime\Attachment)
      • 嵌入图像2(Wedeto\Mail\Mime\Attachment)
  • 附件1(Wedeto\Mail\Mime\Attachment)
  • 附件2(Wedeto\Mail\Mime\Attachment)

用法

有一个传输方式,Wedeto\Mail\SMTPMailer。它可以无参数创建,在这种情况下,默认连接到本地的25端口。您可以指定以下选项:

  • 主机名
  • 端口号
  • 用户名
  • 密码
  • ssl(SSL或TLS)
  • 认证类型(PLAIN、LOGIN、CRAM-MD5)

将这些选项作为关联数组提供

use Wedeto\Mail\SMTPMailer;

$mailer = new SMTPMailer(array(
    'hostname' => 'localhost',
    ...
);

可以使用Wedeto\Mail\HTMLMessage构建HTML消息

use Wedeto\Mail\HTMLMessage;

$msg = new HTMLMessage;
$msg->setHTML('<html><head></head><body><h1>Hi there</h1><p>My message</p>');

您可以添加附件并嵌入图像

$imgurl = $msg->embed('my_image.jpg');
$msg->setHTML('<html><head></head><body><h1>Hi there</h1><p>My message <img src="' . $imgurl . '" /></p>');
$msg->attach('my_document.pdf');

您还可以在内存中生成附件或嵌入图像并提供一个流

$msg->attach('my_document.pdf', $my_resource);

将生成正确的结构。当您设置HTML时,纯文本将自动生成,通过将换行和段落转换为换行符并删除所有HTML来实现。然而,您可能希望覆盖此操作以提供自己的文本

$msg->setPlain('Your mail client does not seem to render HTML. You can visit the online version here: http://your/website');

一旦满意,您可以使用传输方式发送消息。

$msg->addFrom('your@email.com', 'Your name');
$msg->addTo('their@email.com', 'Their name');
$msg->addBcc(['one@example.com', 'two@example.com']);

$mailer->send($msg);

这就完成了,消息已发送!

当然,您也可以使用 Wedeto\Mail\Message 编译自己的消息,通过使用 Wedeto\Mail\Mime\Message 和 Wedeto\Mail\Mime\Part 构建消息,这与使用 Zend\Mail 和 Zend\Mime 的方式非常相似。