質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

PEAR

PEAR (PHP Extension and Application Repository)はPHPで利用する事ができるライブラリです。

Q&A

解決済

2回答

5012閲覧

Pear のMailパッケージ及びMail-MIMEパッケージを使って添付ファイル付きのメール送信が出来ません。

KentaroOnoda

総合スコア17

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

PEAR

PEAR (PHP Extension and Application Repository)はPHPで利用する事ができるライブラリです。

0グッド

0クリップ

投稿2017/03/10 02:12

PHP初心者です。以前の質問内容を(PHPで添付ファイル付きのメールを送信する:詳しい内容は1つ前の質問をご覧頂けると幸いです)PEARのMail及びMail-MIMEパッケージを使ってメール処理部分を作成したのですが、メール送信ができません。パッケージのインストールやパスの設定などは上手くできたのですが、デバッグの際にメール送信の部分{send($recipients, $headers, $body)}でエラーになってしまうようです。原因に心当たりのある方がいらっしゃいましたら、ご教示頂けると幸いです。よろしくお願いします。

参考にしたサイトリンク内容

メール送信処理

require_once("Mail.php"); require_once("Mail/mime.php"); $params = array( "host" => "smtp.lolipop.jp", "port" => 465, "auth" => true, "username" => "○○○○.lolipop.jp", "password" => "△△△△" ); $mailObject = Mail::factory("smtp",$params); $recipients = "kentaro-onoda@lifeone.or.jp"; //メールの本文を作成 $honbunName = "氏名:" . $name . "\n"; $honbunFurigana = "フリガナ:" . $furigana . "\n"; $honbunCompany = "会社名:" . $company . "\n"; $honbunZipcode = "郵便番号:〒". $zipcode1 . "-" . $zipcode2 . "\n"; $honbunAddress = "住所:" . $prefecture . $cityName . $building . "\n"; $honbunMailAddress = "メールアドレス:" . $mailaddress1 . "\n"; $honbunPhoneNumber = "電話番号:" . $phoneNumber1 . "-" . $phoneNumber2 . "-" . $phoneNumber3 . "\n"; $honbunContent = "問い合わせ内容:" . $content; $honbun = $honbunName . $honbunFurigana . $honbunCompany . $honbunZipcode . $honbunAddress . $honbunMailAddress. $honbunPhoneNumber .$honbunContent; $body = $honbun; $mimeObject = new Mail_Mime("¥n"); $mimeObject -> setTxtBody($body); //各項目をShift-JISに変換 //件名 $title = mb_encode_mimeheader(mb_convert_encoding("タイトル", "JIS", "utf-8"),"JIS"); //送信先アドレス $to = mb_convert_encoding("○○○○○@××××.or.jp", "JIS", "utf-8"); if(isset($_POST['fname'])){ //添付ファイルがある場合 $filepath = $_POST['filepath']; $mimeObject -> addAttachment($filepath, "application/pdf"); }//if $bodyParam = array( "head_charset" => "ISO-2022-JP", "text_charset" => "ISO-2022-JP" ); $body = $mimeObject -> get($bodyParam); $addHeaders = array( "To" => $to, "From" => $mailaddress1, "Subject" => $title ); $headers = $mimeObject -> headers($addHeaders); $mailObject -> send($recipients, $headers, $body); //メール送信が完了した場合 $_SESSION['error' . $i] = "お問い合わせ内容を送信しました。";

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

(以下、推測なのですが・・・)

PEARのMail が、SMTPS(SMTP over SSL)通信に対応できていない気がします。
(もしくは、そのようなオプションが存在するのかも)

  • lolipop側は、SMTPS(ポート 465)で通信しようとしている。
  • PEAR のメールは、ポート465 に接続して、SMTP でメールを送信しようとしている。

両者のプロトコルが合わないので、コケル。


(追記:2017-03-15 00:45)

PEARのMail で、SMTPS(ポート465)を利用するには、"host"で ssl:// を付ければ良さそうです。

$params = array( "host" => "ssl://smtp.lolipop.jp", "port" => 465, "auth" => true, "username" => "○○○○.lolipop.jp", "password" => "△△△△" );

Windows 上で動かしているのであれば、php.ini で OpenSSL を有効にしておく。

extension=php_openssl.dll

(参考)
http://stackoverflow.com/questions/712392/send-email-using-the-gmail-smtp-server-from-a-php-page

投稿2017/03/10 04:34

編集2017/03/14 15:48
gorogoroIT

総合スコア447

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KentaroOnoda

2017/03/14 10:09

再度ご回答頂きありがとうございます。エラー内容を調べたところ、Failed to connect to smtp.lolipop.jp:465 [SMTP: Invalid response code received from server (code: -1, response: )]'と出ましたので、SMTPS通信に対応できていないのが原因なのかと思います。ポート番号を変えたりしていろいろ対策を自分なりに考えて実践してみたのですが、どうしても突破口が開けません。もし何か思い当たることがありましたらご指摘頂けると幸いです。よろしくお願いします。
KentaroOnoda

2017/03/15 09:53

わざわざ調べて頂きありがとうございます。ご指摘頂いたとおりホスト名のところを"ssl://smtp.lolipop.jp"と記述したところメールを送ることができました。ただ送信したメールにファイルが添付されておらず、改行させるつもり入力した"¥n"が文字化けしてしまいました。自分でデバックをしたところ $mimeObject -> addAttachment($filepath, "application/pdf")のところで「PEAR_Error:File not found: ../○○/△△△.pdf」と表示されてしまいます。どうやらファイルが見つからないのが原因のようなのです。何度も申し訳ございませんが、この2点につきましても原因に何か心当たりがありましたら、
guest

0

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

として、$retにエラー内容が入ってくると思うので
var_dump($ret);
してみてください。

投稿2017/03/10 07:43

redara

総合スコア344

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KentaroOnoda

2017/03/14 10:02

ご回答頂きありがとうございます。エラーの内容を調べたところ、'Failed to connect to smtp.lolipop.jp:465 [SMTP: Invalid response code received from server (code: -1, response: )]'と出たのでポート465でのメール送信が出来ていないのが原因なのかなと思いますが、ただ対策が分からず悪戦苦闘している状況です。もし何か対策として思い当たることがありましたら、ご教示頂けると幸いです。よろしくお願いします。
redara

2017/03/15 01:20

既に試しているかもしれませんが、ポート587にするとどんなエラーが出ますか?
KentaroOnoda

2017/03/15 09:42

ポート587にすると、「'Failed to connect to ssl://smtp.lolipop.jp:587 [SMTP: Failed to connect socket: fsockopen(): unable to connect to ssl://smtp.lolipop.jp:587 (Unknown error) (code: -1, response: )]' (length=179)」というエラーが出てしまいました。どうやら原因はホスト名のところを"ssl://smtp.lolipop.jp"と記述しないといけなかったようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問