« PEAR で Mailをインストール | トップページ | Mac OS X 10.7 Lion をクリーンインストールして BootCamp で Windows 7 を入れる »

2011年2月13日 (日)

Gmail のSMTPサーバ使ってPEARのMailでメール送信

PEARのMailのメール送信でGmailのSMTPサーバつかってみました。

日本語のメールを送信する - メール送信(PEAR::Mail) - PEAR入門
を参考にさせていただきhtmlファイルとphpファイルを作成
htmlファイルはほぼそのままいただいて、phpファイルは下記

<?php

require_once "Mail.php";

$params = array(
"host" => "smtp.gmail.com",
"port" => 587,
"auth" => true,
"username" => "FROM_nanjarohoi12345678900987654321@gmail.com",
"password" => "xxxxxxxxxxxxx"
);

$mailObject = Mail::factory("smtp", $params);

$recipients = "TO_nanjarohoi12345678900987654321@gmail.com";

$headers = array(
"To" => "TO_nanjarohoi12345678900987654321@gmail.com",
"From" => "FROM_nanjarohoi12345678900987654321@gmail.com",
"Subject" => mb_encode_mimeheader("テストメール")
);

$body = "日本語メールのテストです。";
$body = mb_convert_encoding($body, "ISO-2022-JP", "auto");

$mail = $mailObject -> send($recipients, $headers, $body);

if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message successfully sent!</p>");
}
?>

ページひらくとページのソースも真っ白ということでいろいろ設定↓

Mail.phpがみつからんとかでる
PHP Fatal error: require_once(): Failed opening required 'Mail.php' (include_path='.;D:\eclipse_pdt\workspace\mail_form') in D:\eclipse_pdt\workspace\mail_form\pearmailtest.php on line 3

上記のinclude_pathに、php.iniの最後に書かれたPEARのパスがない
include_path=".;C:\php-5.3.5-Win32-VC6-x86\PEAR"
ブラウザ経由だと多少進んでいるので、どうもeclipseからPEAR見えてないっぽい

Eclipse PDTでPEARの設定:とりあえずメモっておくか:So-netブログ
を参考に下記設定追加
PHP Libraries

PEAR_LIB
という名前で環境変数つくって「Add External folder」でPEARの場所を指定

Eclipse_preferences_php_libraries


PEARは見えるようになったみたいだが次のエラー
PHP Fatal error: Call to undefined function mb_encode_mimeheader() in D:\eclipse_pdt\workspace\mail_form\pearmailtest.php on line 23

mbstring有効にしてなかった

mbstringの設定意味不明なので
日本語利用の為の設定(mbstring) - php.iniの設定 - PHPインストールと初期設定
をそのままいただきやした。

extension_dir = "ext"
extension=php_mbstring.dll
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.substitute_character = none;
;mbstring.func_overload = 0
mbstring.strict_detection = Off
;mbstring.http_output_conv_mimetype=
;mbstring.script_encoding=

そんで、ブラウザで下記表示のエラー

uthentication failure [SMTP: SMTP server does not support authentication (code: 250, response: mx.google.com at your service, [113.146.46.82] SIZE 35651584 8BITMIME STARTTLS ENHANCEDSTATUSCODES)]

gmailのsmtp設定っぽいのでぐぐって
http://stackoverflow.com/questions/712392/send-email-using-gmail-smtp-server-from-php-page

http://ap.atmarkit.co.jp/bbs/core/flinux/15247

http://d.hatena.ne.jp/killswitch5375/20090201/1233444748

どうやら

"host" => "tls://smtp.gmail.com",
とか
"host" => "ssl://smtp.gmail.com",
とかみたいにtls、sslをつければよいらしい


$params = array(
"host" => "ssl://smtp.gmail.com",
"port" => 465,
"auth" => true,
"username" => "FROM_nanjarohoi12345678900987654321@gmail.com",
"password" => "xxxxxxxxxxxxx"
);

に変えてみたが下記エラー

Failed to connect to ssl://smtp.gmail.com:465 [SMTP: Failed to connect socket: Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP? (code: -1, response: )]
Failed to connect to tls://smtp.gmail.com:465 [SMTP: Failed to connect socket: Unable to find the socket transport "tls" - did you forget to enable it when you configured PHP? (code: -1, response: )]

sslが有効でないときにでるらしい
http://q.hatena.ne.jp/1213091871

再びphp.ini修正
;extension=php_openssl.dll
のコメント;はずして
extension=php_openssl.dll

apache再起動で

よーやくメール送信OK

Subjectが文字化けしてる
phpファイルがShift_JISでした
UTF-8に変換して文字化けもかいしょー

|

« PEAR で Mailをインストール | トップページ | Mac OS X 10.7 Lion をクリーンインストールして BootCamp で Windows 7 を入れる »

PHP」カテゴリの記事

Windows」カテゴリの記事

パソコン・インターネット」カテゴリの記事

コメント

gmailとPHPをつかってメールを送る課題が出ていたので、助かりました!
それぞれのエラーとその対処法もわかりやすくまとめてあってとても役立ちました。

ありがとうございますo(*^▽^*)o

投稿: せん | 2012年5月24日 (木) 09時29分

せんさん
こんにちは
コメントどうもありがとうございます


この記事なにやろうとしたときにかいたのかきおくにないなあ
多分のみながらやってました

投稿: jimmy | 2012年5月26日 (土) 10時29分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1009744/38846910

この記事へのトラックバック一覧です: Gmail のSMTPサーバ使ってPEARのMailでメール送信:

« PEAR で Mailをインストール | トップページ | Mac OS X 10.7 Lion をクリーンインストールして BootCamp で Windows 7 を入れる »