当前位置: 首页 > 文档资料 > FuelPHP 中文文档 >

使用 - Email 套件

优质
小牛编辑
132浏览
2023-12-01

Email 套件只需要你三样东西便可开始发送电子邮件。

  1. 「发送来源」地址。
  2. 发送对象地址。
  3. 以及最后但并非最不重要的,讯息。

让我们来发送邮件。

// 建立一个实例
$email = Email::forge();

// 设定来源地址
$email->from('my@email.me', 'My Name');

// 设定接收地址
$email->to('receiver@elsewhere.co.uk', 'Johny Squid');

// 设定一个主题
$email->subject('This is the subject');

// 设定多个接收地址

$email->to(array(
	'example@mail.com',
	'another@mail.com' => 'With a Name',
));

// 并且设定主体。
$email->body('This is my message');

在这里我们已经准备好开始发送邮件。

例外

发送邮件时,你可能会遭遇两种类型的例外。

  • \EmailValidationFailedException:当一个或多个电子邮件地址未通过验证时抛出。
  • \EmailSendingFailedException, 当驱动程序发送失败时抛出

下面的例子显示了如何处理例外。

try
{
	$email->send();
}
catch(\EmailValidationFailedException $e)
{
	// 验证失败
}
catch(\EmailSendingFailedException $e)
{
	// 驱动程序无法发送信件
}

HTML 邮件。

发送 HTML 邮件与发送一般邮件并没有太大不同:

// 设定一个 html 主体讯息
$email->html_body(\View::forge('email/template', $email_data));

/** 预设情况下也会从 html 产生一个替代的主体,
	并附加任何内嵌档案(不像 http://... 的路径)    **/

// 设定一个替代的主体,这是选择性的。
$email->alt_body('This is my alt body, for non-html viewers.');

附件

Email 套件支援两种附件:一般(附件)与内嵌。使用一个内嵌附件, 如果你想在邮件里使用它的话。例如你可能想在你的邮件里有一个图形,并且你想要人们也能在离线看见。 有些客户端并不快取,是的这很愚蠢。但它是跨网发生这样的东西。

// 添加一个附件
$email->attach(DOCROOT.'dir/my_img.png');

// 添加一个内嵌附件
// 在这里添加一个 cid 指向主体
$email->attach(DOCROOT.'dir/my_img.png', true, 'cid:my_conten_id');

你也可以添加字串附件:

$contents = file_get_contents($my_file);
$email->string_attach($contents, $filename);
	

预设情况下,HTML 图片会自动引入,但只引入本地档案。 看看以下的 HTML 以了解它如何运作。

<!-- 这会被引入 -->
<img src="path/to/my/file.png" />

<!-- 这不会被引入 -->
<img src="http://remote_host/file.jpeg" />

<!-- 这不会被引入 -->
<img src="cid:my_conten_id" />
	

你所看见最后的标籤(带有 cid:)也不会被引入。在这种情况下,邮件希望你自己使用内嵌附件附加文件。

优先权

透过使用 priority 方法修改一个邮件的优先权。

$email->priority(\Email::P_HIGH);

流水线

流水线是一个你可以一次发送多封 email 的机制。

$email->pipelining($true);

启用后,你可以使用相同的 $email 物件来建构并发送多封 email,在使用相同的连线到邮件伺服器。 你应该谘询你的邮件伺服器託管公司来了解这是否是允许的,以及你在单一流水线可以送出 email 的最大数量。 大多数的主机商限制一个特定数量,之后伺服器断开连线。

目前,只有 SMTP 驱动支援流水线。

驱动

Mailgun 驱动

Mailgun 是一个由 Rackspace 提供,能让你依需求量发送电子邮件的服务。你会需要在你的 FuelPHP 中用 composer 安装 Mailgun 函式库

添加下一行到你的 composer.json 档案并执行更新

"mailgun/mailgun-php": "1.6"
$ composer update

一旦你安装了套件,你必须要为你的 App 设置配置。


/**
 * 覆盖预设 Email.php 配置
 */
return array(
    'defaults' => array(
        'driver' => 'mailgun',
        'mailgun' => array(
            'key' => 'YOUR KEY',
            'domain' => 'YOUR DOMAIN'
        ),
    ),
);