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

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

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

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

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

Q&A

解決済

1回答

2784閲覧

composerのautoloadが読み込めたけどPHPMailerのaddReplyToがエラーになる

nyam

総合スコア2

PHP

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

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

0グッド

0クリップ

投稿2020/11/03 10:46

編集2020/11/04 04:59

##やりたいこと
PHPMailerを使ってメールを自分宛てと他の人宛てに送信したいです。
PHPMailerのインストールにはcomposerを使いました。

##困っていること
回答してくださった方の通りにファイルの位置を変えたらautoloadの箇所はエラーを吐かなかったです。
ただ、エラー内容の文言がconfirm.phpのページで送信を押すと表示されます。
該当の行をコメント行にすると送信完了になり、送信できた判定になるのですが、メールは何も届いていません。

##PHPMailerのインストールについて
composerをインストールしたあと、コマンドプロンプトを開いて、
composerを入力してenter,そのあと composer require phpmailer/phpmailer と入力しました

##エラー内容
confirm.phpの表示画面で送信を押すと表示されました

Fatal error: Uncaught Error: Call to undefined method PHPMailer\PHPMailer\PHPMailer::addReplayTo() in C:\xampp7\htdocs\Complete.php:56 Stack trace: #0 {main} thrown in C:\xampp7\htdocs\Complete.php on line 56

##ファイルの位置
・c:\xampp7\htdocs中    ・vendorフォルダの中
→composer         composerフォルダ
composer.bat        phpmailerフォルダ
composer.phar       autoload.php
Composer-Setup.exe
composer.json
composer.lock
Input.php
Comfirm.php
Complete.php
vendorフォルダ
commonフォルダ
style.css

##ソースコード

PHP

1complete.php 2 3<?php 4//変更箇所:3,4,6,42行目 5 use PHPMailer\PHPMailer\PHPMailer; 6 use PHPMailer\PHPMailer\Exception; 7 8 //declare(strict_types = 1); 9 session_start(); 10 11 require('vendor/autoload.php'); 12 13 include('htmlの最初の文言を読み込み'); 14 require('いろんな関数読み込み'); 15 require('common/mailvars.php'); 16 17 18 validateToken1(); 19 20 //POST形式で送られた値の確認 21 inputcheck($_POST); 22 23 //---省略(セッション変数に入っている値をそれぞれの変数に代入してる) 24 25 26 //お問い合わせ日時を日本時間に 27 date_default_timezone_set('Asia/Tokyo'); 28 29 //確認メールの内容 30 $mail_body =(上記の代入先の変数を取り入れてメールの内容を作っている(省略)31 32 //-------PHPMailerの設定--------------- 33 34 $MAILER = new PHPMailer(); 35//変更した箇所(8行目あたりにかくとMAIL_HOSTが未定義だとエラーになりました) 36 require('/mailset.php'); 37 38 $MAILER->isSMTP(); 39 $MAILER->SMTPAuth = true; 40 $MAILER->Host = MAIL_HOST; 41 $MAILER->Username = MAIL_USERNAME; 42 $MAILER->Password = MAIL_PASSWORD; 43 $MAILER->SMTPSecure = MAIL_ENCRPT; 44 $MAILER->Port = SMTP_PORT; 45 46 //-----------メールの設定---------- 47 $MAILER->CharSet = "UTF-8"; 48 $MAILER->Encoding = "base64"; 49 $MAILER->setFrom (mail_from,mail_from_name); 50 $MAILER->addAddress($mail); 51 //<----変更した箇所('mail_bcc','mai_bcc_name'からmail_return_path 52 $mail->addReplayTo (mail_return_path); 53 $mail->addBcc(mail_bcc); // BCCで追加 54 $mail->Subject = $subject; // メールタイトル 55 56 $mail->Body = $mail_body; // メール本文 57 58 ?> 59 60 <?php if($MAILER->send()) :?> 61 <p>失敗しました</p> 62 63 <?php else:?> 64 <h2>送信完了画面</h2> 65 <p>ありがとうございます。送信が完了しました。</p> 66 <?php endif;?> 67 68<?php 69 include('common/footer.php'); 70 71 72 if (isset($_COOKIE["PHPSESSID"])) { 73 setcookie("PHPSESSID", '', time() - 1800, '/'); 74 } 75 76 $_SESSION = array(); 77 session_destroy(); 78

php

1mailvar.php 2 3<?php 4 5//メールの宛先bcc(管理者の送信先(仮)) 6define('mail_bcc','****@yahoo.co.jp'); 7 8//bccメールの宛先の名前 9define('mail_bcc_name','管理者'); 10 11//送信元のアドレス(仮) 12define('mail_from','*****@yahoo.co.jp'); 13 14//送信元の名前 15define('mail_from_name','お問い合わせフォーム'); 16 17//自動返信先 18define('mail_return_path','*****@yahoo.co.jp'); 19

php

1mailset.php 2?php 3 4// メールホスト名 5define('MAIL_HOST','(送信元と同じ)@yahoo.co.jp'); 6 7// メールユーザー名・アカウント名 8define('MAIL_USERNAME','メールホスト名と同じ'); 9 10// メールパスワード 11define('MAIL_PASSWORD','****'); 12 13 // SMTPプロトコル(sslまたはtls) 14define('MAIL_ENCRPT','tls'); 15 16// 送信ポート(ssl:465, tls:587) 17define('SMTP_PORT', 587);

##バージョン情報など
PC:Windows10
PHP:vertion 7.2.16
composer:vertion 2.0.4 2020-10-30 22:39:11
※phpはxamppとApacheを使っています。xamppのバージョンはうまく調べられませんでした。XAMPP Control Panelはv3.2.3と表示されています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

composerでどうインストールしたかという一番重要な情報が抜けてる。

composerは基本的にプロジェクトのルートで使う。
今回ならC:\xampp7\htdocs\がルート?
ここにcomposer.jsonを作って
composer require phpmailer/phpmailerでインストール。
C:\xampp7\htdocs\vendorにいろいろインストールされる。
これが普通の使い方。

全く違う場所にインストールされてるのは使い方を間違えてる。

complete.phpに足りないのはuseでのインポート。

use PHPMailer\PHPMailer\PHPMailer;

これがないまま$MAILER = new PHPMailer();だから動かない。

古い情報だとcomposerも名前空間もないかもしれないけど
流石に今では入門レベルなので新しめの情報での学習が必要。

投稿2020/11/03 13:16

kawax

総合スコア10377

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

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

nyam

2020/11/04 03:25

回答ありがとうございます。使いかたを間違えていたんですね。教えてくださった場所にファイルを移動してもう一度試してみます。 ありがとうございました。
nyam

2020/11/04 03:29

composerをインストールしたあと、コマンドプロンプトを開いて、 composerを入力してenter,そのあと composer require phpmailer/phpmailer と入力しました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問