PHPのPEAR Mailを使用してSMTP経由でメール送信

SMTP経由
2014/01/10

SMTP経由でメール送信

概要

PHPのPEARモジュール、Mailを使用して、SMTP経由でメールを送信する方法を紹介しています。

通常では、PHPのmb_send_mail関数などを使用すると、Webサーバーからメールが送信されます。
php.ini のSMTPを変更することで、別のSMTPサーバーからメールを送信することができます。

しかし、php.iniは変更したくない、プログラムの中でSMPTを指定したい、ということも良くあります。
そういった時のために、プログラムでSMTPを指定してメールを送信する方法を掲載します。

SMTPとは

SMTPとは、インターネットなどで電子メールを送信するためのプロトコルです。
プロトコルとは、コンピューター同士が通信をするための手順や規約のこと。

サーバー間でメールを転送する際に、もっとも広く利用されています。
通常はTCPのポート番号25を利用します。

サンプルコード&手順

環境作成

PEAR Mail から、Mailモジュールをダウンロードします。
ダウンロードしたファイルを展開して、Mail.phpとMailディレクトリをWebサーバーの任意の箇所に配置します。

例:
/home/pbtimes/pear/Mail/
/home/pbtimes/pear/Mail.php

メール送信メソッドの作成

下記はメールを送信するためのメソッドのサンプルとなります。


class Sendmail
{
	public function mail_sender($to, $subject, $body)
	{
		require_once '/home/pbtimes/pear/Mail.php';  //[Mail.phpのパス]

		$mail_from = 'info@pb-times.jp';  //メールのFromアドレス
		$SMTP = 'xxx.xxx.xxx.xxx';  SMTPサーバーのホスト

		$org = mb_internal_encoding();
		mb_internal_encoding("ISO-2022-JP");
		$subject = mb_encode_mimeheader(mb_convert_encoding($subject, "ISO-2022-JP", "UTF-8"),"ISO-2022-JP","B","¥r¥n");
		mb_internal_encoding($org);

		$body = mb_convert_encoding($body, "ISO-2022-JP", "UTF-8");

		$params = array(
			"host" => $SMTP,
			"port" => "25",
			"auth" => false,
			"username" => "",
			"password" => "",
			"sendmail_args" => "f"
		);

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

		$headers = array(
			"To" => $to,
			"From" => $mail_from,
			"Subject" => $subject,
			"Return-Path" => $mail_from
		);

		$mailObject->send($to, $headers, $body);
	}
}

送信処理

作成したメソッドを使用して、メールを送信します。


$to = "to@pb-times.jp";  //送信先アドレス
$subject = "件名";
$body = "内容";

$sendmail = new Sendmail();
$sendmail->mail_sender($to, $subject, $body);  //送信
  • このエントリーをはてなブックマークに追加
Related

FullCalendarでGoogleカレンダーのようなUIを実装

jQueryプラグインFullCalendarのサンプル 概要 FullCalendarを使用して、GoogleカレンダーのようなUIを実装する使用例を...

PHP Laravel5.2でmulti-auth(複数テーブルでの認証)を実装

Laravel5.2でマルチ認証 概要 LaravelとはPHPの中で今最も伸びているフレームワークです。 処理速度が遅いなどありますが、かなり使い安く拡...

PHP 正規表現でIPアドレス形式の文字列か判定

正規表現でIPアドレスの入力チェック 概要 フォームで入力されたIPアドレスが正当な文字列か判定するためのバリデーション処理を実装します。 基本的...

rbenv環境でRuby on Railsのアプリケーションを一瞬で自動生成

アプリケーション構築時に最初に行う手順 概要 アプリケーションを作成するまでの手順を記載しています。 rbenvなどの環境が設定済と仮定して話を進めま...

Rails devise・authority・rolifyで権限付きの認証機能

devise・authority・rolify 概要 3つのGemを使用して、権限付き認証機能を実装します。 gem インストール Gemfile ...

Rails devise で複数モデルの認証機能を実装

Rails devise で複数モデルを管理 概要 rails のログイン認証 Gem「devise」のインストール・設定方法を紹介します。 よく「d...
トップへ戻る