openclerk/emails

此包的最新版本(0.1.2)没有可用的许可信息。

发送邮件和邮件管理的库

0.1.2 2017-01-12 07:01 UTC

This package is auto-updated.

Last update: 2024-09-14 10:29:39 UTC


README

发送邮件和邮件管理的库。

安装

openclerk/emails 包含在项目 composer.json 的依赖项中,然后运行 composer update 以将其安装到项目中。或者,运行 composer require openclerk/emails

{
  "require": {
    "openclerk/emails": "^0.1"
  }
}

功能

  1. 发送文本或HTML邮件
  2. 使用 html2text 自动生成文本多部分内容
  3. 使用 emogrifier 自动内联CSS样式,以支持 Gmail 等客户端
  4. 使用 email_sent 事件 跟踪已发送的电子邮件
  5. 向原始地址或返回 getEmail() 的用户对象发送电子邮件

使用方法

此项目使用 openclerk/config 进行配置管理。

首先使用特定于站点的值配置组件(假设SMTP)

Openclerk\Config::merge(array(
  "phpmailer_host" => "mail.example.com",
  "phpmailer_username" => "mailer",
  "phpmailer_password" => "password",
  "phpmailer_from" => "mailer@example.com",
  "phpmailer_from_name" => "Example Mailer",
  "phpmailer_reply_to" => "mailer@example.com",
  "phpmailer_bcc" => "copy@example.com",   // if set, send a copy of all emails to this address

  // optional values
  // "emails_templates" => __DIR__ . "/../emails",
  // "emails_additional_css" => __DIR__ . "/../config/custom.css",
));

现在在 emails/<id>.html 中定义模板

<title>Test email sent {$now}</title>
<h1>Hi {$email},</h1>

<p>This is a test email sent {$now}.</p>

您可以选择在 emails/layout.html 中指定包装布局HTML文件,并在 emails/layout.css 中指定CSS样式

<link href="layout.css" media="all" rel="stylesheet" type="text/css" />
<div class="content">
  {$content}
</div>
html, body {
  background: #eee;
  font-family: 'Arial', sans-serif;
  margin: 0;
  padding: 0;
}
.body {
  background: #eee;
  padding: 15px;
}
.content {
  padding: 15px;
  background: white;
  border: 1px solid #ccc;
  color: #111;
  line-height: 130%;
}

现在您可以立即发送电子邮件

$user = Users\User::findUser(db(), 1);
if (!$user) {
  $user = "test@example.com";
}

$result = Emails\Email::send($user, "<id>", array(
  "now" => date('r'),
));

跟踪发送的电子邮件

可以使用 email_sent 事件 跟踪已发送的电子邮件,例如通过将它们插入到 emails 数据库表

Openclerk\Events::on('email_sent', function($email) {
  // insert in database keys
  $q = db()->prepare("INSERT INTO emails SET
    user_id=:user_id,
    to_name=:to_name,
    to_email=:to_email,
    subject=:subject,
    template_id=:template_id,
    arguments=:arguments");
  $q->execute(array(
    "user_id" => $email['user_id'],
    "to_name" => $email['to_name'],
    "to_email" => $email['to_email'],
    "subject" => $email['subject'],
    "template_id" => $email['template_id'],
    "arguments" => serialize($email['arguments']),
  ));
});

模拟邮件

您可以通过使用有效的回调调用 Emails\Email::setMockMailer($callback) 来设置模拟邮件发送器

function setUp() {
  Emails\Email::setMockMailer(array($this, "mockMailer"));
}

function tearDown() {
  Emails\Email::setMockMailer(null);
}

function mockMailer($to_email, $to_name, $subject, $template, $html_template) {
  // do your mock tests...
}

待办事项

  1. 排队/批量电子邮件
  2. 正确转义模板
  3. 国际化
  4. 失败通知

其他版本

  1. actionmailer-html2text 是一个Ruby电子邮件框架,可以自动为ActionMailer生成文本多部分内容