XAMPPでSendmailをローカルに送信できるなら何でも良い

Sendmail の設定をしていたんですが、なかなかうまくいかない。8時間くらい悪戦苦闘しながらも、Google で何十回も検索してなんとか解決。また困ると思うし、他の人のためにもここにまとめておきます。

ローカルでメールを送信できるようにする。

xampp/php/php.ini のどこ書き変えたかわからないけど、結局最後はこれで定着しました。

1
2
3
4
5
6
7
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25
 
; For Win32 only.
sendmail_from = me@example.com

途中いろいろなエラーメッセージに遭遇したけどちゃんと訳すことが大事ですね。あと、大体なかなか解決できない不具合っていうのは初歩的なミスが原因で、難しいことは関係ないのがほとんどだって最近思います。(例えばApacheの再起動とかですね。)

メールが送信できるかテストを行う。

XAMPPの管理ツールにあるMercury Mailでテストが行える。送信元(送信者)は必要に応じて変更することができるが、送信先(受信者)は admin@localhost しか送れないけど、特に送れるなら何でも良いです。あと、とりあえずXAMPPコントロールアプリケーションからMercuryを開始させときます。

送信したメールが保存されている場所。

xampp/MercuryMail/MAIL/Admin に保存されています。ちなみに拡張子が .CNM になっているファイルがメールです。適当に秀丸とかのエディタで開いたら中身見れました。

PHPでメールを送信する。

基本はこんな感じで文字化けもせずに送れました。サーバーに出してこれでいけるかは知りませんが。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$strMailFrom = "送信元メールアドレス";
$header = "Content-Type: text/plain;charset=iso-2022-jp\r\n";
$header .= "From: ".$strMailFrom;
mb_language("Japanese");
$address = 'admin@localhost';
$subject = '件名';
$message = '本文';
if(mb_send_mail($address, $subject, mb_convert_encoding($message,"jis","utf-8"),$header)){
  print("送信完了しました。");
}else{
  print("エラー:送信に失敗しました");
}
?>

かなり適当な記事になっちゃいました。

参考ページ

Goo知恵袋 phpでメール送信できません 原因がわかりませんので教えてください
mb_convert_encoding

コメント

コメントは受け付けていません。