« ◇にて | トップページ | 経済規模に応じた貨幣流通量を;増税は不要だ »

XAMPP;PHP;メール送信;設定;プログラムサンプル

ただ「動いた」というだけのメモです。(XAMPP:1.7.7;PHP:5.3.8;Windows7/64bit)

 WindowsのXAMPP/PHPからメールを送信するための設定

XAMPP/PHPでのメール設定はいくつかの異なるやり方があるため、 混乱を極めています。

ここではxampp/sendmail.exeを使い、Mercuryは使わず、普段使っている契約プロバイダ経由でメール送信をします。
設定するファイルは

  • php.ini (普通はC:\xampp\php\php.ini)
  • sendmail.ini (普通はC:\xampp\sendmail\sendmail.ini)
の2つです。

php.iniの設定:

  • sendmail.iniで設定する項目(SMTP=,smtp_port=,sendmail_from)を 混乱防止のためコメントアウトします。
  • sendmail_path=を有効にします

;; C:\xampp\php\php.ini
[mail function]
; For Win32 only.
; http://php.net/smtp
;SMTP = localhost
; http://php.net/smtp-port
;smtp_port = 25
; For Win32 only.
; http://php.net/sendmail-from
;sendmail_from = postmaster@localhost
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
; 次行は最初から有効なはずですが念のため
extension=php_mbstring.dll

sendmail.iniの設定:

  • 普段使っているメール設定をsendmail.iniに設定します。

;; C:\xampp\sendmail\sendmail.ini
smtp_server   = SMTPサーバアドレス
smtp_port     = SMTPサーバのポート番号
smtp_ssl      = auto
default_domain= SMTPサーバドメイン
auth_username = プロバイダでのメール・ユーザ名
auth_password = メール・ユーザのパスワード
force_sender  = メールの送信者
hostname      = 自ホストコンピューター名
例えばWindowsLiveメールの「アカウント」-「プロパティ」から情報を移すなら次のようになります。

自ホストというのはXAMPP/PHPを動かしているコンピューターの ことだと思います。ブラウザを動かすコンピュータに関しては 設定不能ですので。名前自体は外部的に有効ではない LAN内に閉じたものでも構いません。
複数の利用者契約で使える設定法は不明です。メール毎のヘッダに "From:"を付けることはできますが、sendmail.ini自体は一つの メール契約を使うこととなります。
ini_set("sendmail_path","なんだかんだ")でダイナミックに 設定を選択できるかもしれません。

 PHPでメール送信するサンプルコード

次のようなコードでメール送信ができます。

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0.1//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!-- mailTest.php -->
<html lang="ja">
<head>
<meta http-equiv="Content-Type" Content="text/html;charset=UTF-8">
<meta http-equiv="Content-Script-Type" content="text/javascript">
</head>
<body>
<form method="POS" action="mailTest.php">
宛先:
<input type="text"   name="to"     size=50 />
<input type="submit" name="submit" value="送信" />
</form>
<?php
mb_language("uni");  
mb_internal_encoding("utf-8"); 
mb_http_input("auto"); 
mb_http_output("utf-8");
if( array_key_exists('submit',$_REQUEST) ){
   $to     = $_REQUEST['to'];
   $header = "From: ".$to;
   $subject= "PHPからのメール送信試験";
   $message= "試験です";
   if( mb_send_mail($to, $subject, $message,$header) ) {
      echo $to." 宛てメールが送信されました。";
      }
   else {
      echo $to." 宛てメールの送信に失敗しました。";
      }
   }
?>
</body>
</html>

宛先をセットして[送信]を押すと、php部が動き試験メールが送信されます。
php部の最初の4行は文字化けを起こさないための設定です。
mb_send_mail()がメール送信関数です。

 ###

Mercuryも試しましたが、上記サンプルで「メールが送信されました」 とはなるのですが、残念ながら宛先に届きませんでした。

ところで、アカウント名とユーザ名とユーザidって何が違うんでしょう?

|

« ◇にて | トップページ | 経済規模に応じた貨幣流通量を;増税は不要だ »

トラックバック


この記事へのトラックバック一覧です: XAMPP;PHP;メール送信;設定;プログラムサンプル:

« ◇にて | トップページ | 経済規模に応じた貨幣流通量を;増税は不要だ »