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)
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って何が違うんでしょう?
| 固定リンク

