Email パッケージの使用方法

email パッケージでメールを送るために必要な項目は、次の 3 つだけです。

  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');

この時点で、メールを送信する準備ができました。

例外

メールを送信する際、次の 2 種類の例外が発生する可能性があります。

下記の例では、これらの例外を扱う方法を示します。

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 パッケージは、通常の添付とインラインの 2 種類の添付方法をサポートします。 メールの本文中に使いたい場合は、インライン添付を用います。例えば、図を挿入して、オフラインでも表示できるようにしたいときなどです。 ただし、受信側のメーラーによっては対応していないことに注意してください。

// 添付ファイルを追加する
$email->attach(DOCROOT.'dir/my_img.png');

// インライン添付を追加する
// HTML に挿入するために 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->pipelining($true);

一度有効にすれば、同じメールサーバーの接続を再利用して複数メールの構築や送信を行うために、同じ $email オブジェクトを使うことができます。 メールサーバーのホスティング会社がパイプラインを許可しているか、 またメールの最大送信数がどれだけなのかを考慮しなくてはいけません。

今のところ、 SMTP ドライバのみがパイプラインをサポートしています。