人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

xampp導入環境でphpを使ったメール送信について質問です。

メール送信の方法を教えて下さい。
条件
・smtpの設定が要らない
・簡単で
・スマートな

それについて詳細なホームページも紹介して下さい。


できれば簡便そうなsendmailがいいのですが、
windows環境によりsendmailという回答は除きます。

●質問者: siseiall
●カテゴリ:インターネット ウェブ制作
✍キーワード:PHP sendmail SMTP Windows XAMPP
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● pahoo
●27ポイント

WindowsXP(SP2) + XAMPP(PHP5)でメール送信したい――という前提で回答します。


PHPのmail関数はsmtpを前提としているので、「smtpの設定が要らない」という条件をクリアするのは困難です。また、SMTPサーバとしてsendmailラッパまたはqmailが必要です。


PHPで書かれたsmtpサーバとしては、ポータブルSMTPサーバ「PHP SMTP Server for Windows」があります。


また、fsockopen関数を使ってダイレクトにsmtp通信をする方法は「PHP:fsockopen()を使ってSMTPでメール送信」があります。


なお、プロバイダによっては迷惑メール防止対策を施している、上記のような方法でインターネットへメールを送出できないかもしれません。その場合は、契約されているプロバイダにご相談ください。


参考サイト

◎質問者からの返答

ありがとうございます。

多数の方法どれもがスマートそうでうれしいです。

ただどれを選べばいいのかわかりません。


2 ● y-kawaz
●27ポイント

WindowsでXAMPP使うなら Mercury を起動しておけばSMTPサーバとして動作してくれます。

ただデフォルト設定だとメールのリレーをしてくれなかった気がするので設定変更が必要です。


■Mercuryの設定

・XAMPPコントロールパネルからMercuryを起動します

・Mercuryの管理ツールを起動します

・Mercuryの管理ツールのメニューからConfiguration>MercuryS SMTP Serverを開きます

・ダイアログのConnection controlタブの下の方にあるチェックボックスで「Do not permit SMTP relaying og non-local mail」と「Authenticated SMTP connections may relay mail」のチェックを外します

・上記設定をしたらMercuryの管理ツールは閉じて良いです


■メール送信のサンプルコード

Mercuryの設定が出来たらXAMPPのApacheで以下のようなコードを書けばメール送信ができます。

<?php
//この辺りの設定は必要なら行う
//mb_internal_encoding('UTF-8');
//ini_set('SMTP', 'localhost');
//ini_set('smtp_port', 25);

$from = "from@example.jp";
$to = "to@example.jp";
$subject = '日本語サブジェクト';
$body = "本文です。\n日本語テスト";
//送信処理(日本語メール特有の文字コード変換とかヘッダの処理をする)
$body = mb_convert_encoding($body, 'iso-2022-jp', 'UTF-8');
$subject = mb_convert_encoding($subject, 'iso-2022-jp', 'UTF-8');
$subject = mb_encode_mimeheader($subject, 'iso-2022-jp');
$headers[] = "From: $from";
$headers[] = 'Content-Type: text/plain; charset=iso-2022-jp';
$headers[] = 'Transfer-Encoding: 7bit';
mail($to, $subject, $body, join("\n", $headers));
?>

↑上記コードはPHPソースの文字コードはUTF-8で書いた場合です。他の文字コードで書いている場合はUTF-8の部分を適宜変えてください。

メール送信の際は最終的にiso-2022-jpにして送るようになってればよいです。

http://q.hatena.ne.jp/answer

◎質問者からの返答

ありがとうございます。

いまある環境で送れてしまうのが簡便ですね。

スマートなのかわからないですが。


3 ● y-kawaz
●26ポイント

>smtpの設定が要らない

この部分を「smtpサーバを指定するという(php側の)設定が要らない」ととってしまってたんですが、よくよく見なおせば「自分でSMTPサーバを設定しなくてよい」ということですよね?(^^;

それだと上の回答でMercuryの設定方法を書いてるのはずれてましたね。


いちばん簡単なのは「上記回答のサンプルコードで ini_set('SMTP', 'localhost'); の部分のコメントアウトを外して logalhost の代わりにプロバイダのsmtpサーバを指定する」というのが楽な気がします。

これなら自分でsmtpサーバの設定はする必要が無く、上記 php のコードだけで動きます。

http://q.hatena.ne.jp/answer

◎質問者からの返答

ありがとうございます。

sendmailだとsmtpはなにも触りませんよね。

・smtpの設定が要らない」とはそのことです。

よって条件を満たしていません。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ