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

PHPで動画の撮影日を取得

PHPで動画の撮影日を取得 概要 PHPからffprobeコマンドを実行し、動画の撮影日時を取得します。 コード $posted_at = ...

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 ...
トップへ戻る