PEARを利用してメールを送信する。

1.メール受信(トリガー)

2.メールの本文を取得し、メール本文を変更

3.変更したメールを任意のメールアドレスへ転送


さて、
いよいよ自分がやりたかったことも大詰めだ。

変更したメールを任意のメールアドレスへ転送

メール送信もPEARのモジュールを使用する。


インストールを忘れないようにする。
(まんまと忘れて、はまりかけた・・・)


そして、これもまんまぱくり。

<?php
require_once("Mail.php");

$params = array(
  "host" => "xxx.xxx.xx",
  "port" => 587,
  "auth" => true,
  "username" => "xxx@xxx.xxx.xx",
  "password" => "xxxxxxxxx"
);

$mailObject = Mail::factory("smtp", $params);

$recipients = "xxx@xxx.xxx.xx";
$headers = array(
  "To" => "xxx@xxx.xxx.xx",
  "From" => "xxx@xxx.xxx.xx",
  "Subject" => mb_encode_mimeheader("テストメール"),
  "Date" => date("r")
);

$body = "日本語メールのテストです。";
$body = mb_convert_encoding($body, "ISO-2022-JP", "EUC-JP");

$mailObject -> send($recipients, $headers, $body);
?>

※一部修正

SMTPサーバやメール送信先などは書き換えて使用して下さい。ポート番号も「Outbound Port25 Blocking」などの関係で25番ポートではなく587番ポートなどが使われていますがこちらも環境に合わせて変更して下さい。
日本語のメールを送信する - メール送信(PEAR::Mail) - PEAR入門


これも上記のテンプレートにそって
自分の環境に当てはめればOKだろう。


一部修正したところは
前回の記事でも書いた文字コード変換のautoを
きちんと文字コードを指定するように変更。


またもう1個がとても重要なのだが、
送信日時の指定だ。


どうも送信日時が空になっておかしいなぁ
と思って調べてみると公式HPの書き込みにあった。

Note by: David Lidstone
2007-08-04 15:40 UTC
Warning... Depending (I'm guessing) on your SMTP MTA some emails can be sent without dates and some with, unless you specify a date in the header. For example, my _locally_ delivered mail was ending up at the bottom of people's inboxes because it had a date of 1970. External mail was fine (header added by MTA?).


Add this header to fix:
'Date' => date("r")
Manual :: メールを送信する


よって以下を追加したということ。

  "Date" => date("r")


このdate("r")って何かなぁと思って調べてみると
RFC 2822 フォーマットされた日付らしい。

例: Thu, 21 Dec 2000 16:01:07 +0200
PHP: date - Manual


まんまこれを使えばいいのだ!


よっしゃーできた〜


他参考:
http://www.s-memo.net/blog/2007/03/pearmail_1.php
- よくきたWiki