サンプル集  >  PHP  >  メール送信
メール送信
2008/11/02

php でメールを送信してみます。

◆環境
OS Windows Vista Home Premium
PHP 5.2.4

メール送信は mail関数で行います。

mailTest.php
1: 
2: 
3: 
4: 
5: 
6: 
<?php
    mail("test@mail.com"
        ,"test title"
        ,"this is test mail.\nhello php mail!!"
        );
?>

コマンドプロンプトから実行します。

>php mailTest.php

Warning: mail(): "sendmail_from" not set in php.ini or custom "From:"
 header missing in mailTest.php on line 2

警告が出ました。

『php.iniに「sendmail_from」が設定されていない。もしくはカスタム「From:」ヘッダーが間違っている』という感じですね。 Fromを付けてみます。

mailTest2.php
1: 
2: 
3: 
4: 
5: 
6: 
7: 
<?php
    mail("test@mail.com"
        ,"test title"
        ,"this is test mail.\nhello php mail!!"
        ,"From: a@a.com"
        );
?>

実行してみます。

>php mailTest2.php

Warning: mail(): Failed to connect to mailserver at "localhost"
 port 25, verify your "SMTP" and "smtp_port" setting in php.ini
 or use ini_set() in mailTest2.php on line 2

警告が出ました。

メールサーバーへの接続に失敗。 localhostのポート25に接続できなかったようです。 「SMTP」と「smtp_port」を php.ini、もしくはini_set()で設定するようにと言っているようです。

php.iniは環境によっては直接編集できない可能性があるので、ini_set()を使ってみます。

mailTest3.php
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
<?php
    ini_set("SMTP""smtp.com");
    ini_set("smtp_port""123");
    mail("test@mail.com"
        ,"test title"
        ,"this is test mail.\nhello php mail!!"
        ,"From: a@a.com"
        );
?>

実行してみます。

>php mailTest4.php

Warning: mail(): SMTP server response: 553 sorry, your envelope
 sender domain must exist (#5.7.1) in mailTest4.php on line 4

「From: 」のアドレスを適当にしているのがまずいのかもしれないので正しいアドレスにして実行してみます。

>php mailTest4.php

Warning: mail(): SMTP server response: 451
 See http://pobox.com/~djb/docs/smtplf.html.
 in mailTest4.php on line 4

警告が出ました。 表示されているURLへアクセスしましたが、良く分かりませんでした。

調べると、文字コードが問題の可能性があるようでしたので UTF-8 にして再度実行してみます。 UTF-8への変換は、テキストエディタの「名前を付けて保存」で文字コードを指定して変換します。

「Unicodeサイン(BOM)」にデフォルトでチェックがついていたのでそのままにしました。

実行してみます。

>php mailTest-UTF-8.php
・ソ
Warning: mail(): SMTP server response: 451
 See http://pobox.com/~djb/docs/smtplf.html. 
in mailTest-UTF-8.php on line 4

警告が出ました。 「Unicodeサイン(BOM)」のチェックをはずしてファイルを作り直し実行してみます。

>php mailTest2-UTF-8.php

Warning: mail(): SMTP server response: 451
 See http://pobox.com/~djb/docs/smtplf.html.
 in mailTest2-UTF-8.php on line 4

警告が出ました。 メール本文の改行を消してみます。

mailTest3.php
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
<?php
    ini_set("SMTP""smtp.com");
    ini_set("smtp_port""123");
    mail("test@mail.com"
        ,"test title"
        ,"this is test mail.hello php mail!!"
        ,"From: a@a.com"
        );
?>

実行してみます。

>php mailTest3-UTF-8.php

>

警告が出ませんでした。

早速、メーラーで受信してみます。

受信しました! 改行が悪かったのか?文字コードが悪かったのかはっきりしたいので、UTF-8にするまえのもののメール本文の改行をとってテストしたところ送信できました。

改行が悪かったようです。


2014/07/25追記

次の環境で実施したら、SMTPの認証の警告が出ました。

OS Windows 7 Prodessional Service Pack 1
PHP PHP 5.5.0 (cli) (built: Jun 19 2013 15:50:56)

SMTP serverが認証を要求してきたようです。

PHP Warning:  mail(): SMTP server response: 530 5.7.0 Authentication re
quired in mailTest4.php on line 8

Warning: mail(): SMTP server response: 530 5.7.0 Authentication require
d in mailTest4.php on line 8

▲ PageTop  ■ Home


Copyright (C) 2014 ymlib.com