PHPMailerのコードエラーが解決出来ません

このQ&Aのポイント
  • 入力フォームの最終段階で、PHPMailerのコードを使ったプログラムを書いているのですが、エラーが出てしまいます。
  • コードは下記のサイトを参考にして作成しましたが、原因がわかりません。
  • どうすればエラーを解決できるでしょうか?回答をお願いします。
回答を見る
  • ベストアンサー

PHPMailerのコードエラーが解決出来ません

PHPMailerのコードエラーが解決出来ません。 入力フォームの最終段階で、PHPMailerのコードを使ったプログラムを書いているのですが、PHPMailerの知識が乏しいので、下記のサイトを参考に、書いてあったコードをコピペして、一部を改変して、書いたのですが、付属画像のようなエラーが出てしまいます。書いたコードは下にあります。 参考サイト https://web.hazu.jp/php-mailer/   このサイトからコードをコピペして少しメールや送信する情報等を改変したので、スペル間違いなど、ないと思うのですが、原因は何でしょうか。回答よろしくお願いいたします。全くわかりません。どうコード書いたら良いでしょうか? 回答よろしくお願いいたします。困っています先に進めません。 エラー名;Undefined type'PHPMailer/PHPMailer/PHPMailer' もう一つすぐ下にもエラーが出ます。 エラー名 Undefined type'PHPMailer/PHPMailer/Exception'   全コード一覧 <?php // PHPMailer クラスをネーム空間にインポート use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; // Composer の autoloader をロード require 'vendor/autoload.php'; // 入力内容の取得・変数に格納 $name = $_POST['name']; $furigana = $_POST['furigana']; // メール日本語対応 mb_language("japanese"); mb_internal_encoding("UTF-8"); // インスタンス生成 $mail = new PHPMailer(true); try { // SMTPの設定 $mail->isSMTP(); // SMTP 利用 $mail->Host = 'smtp.gmail.com'; // SMTP サーバー(Gmail の場合これ) $mail->SMTPAuth = true; // SMTP認証を有効にする $mail->Username = '○○@gmail.com'; // ユーザ名 (Gmail ならメールアドレス) $mail->Password = '△△'; // パスワード $mail->SMTPSecure = 'tls'; // 暗号化通信 (Gmail では使えます) $mail->Port = 587; // TCP ポート (TLS の場合 587) // メール本体 $mail->setFrom('○○@gmail.com', 'hazuki'); // 送信元メールアドレスと名前 $mail->addAddress($email, mb_encode_mimeheader($name, 'ISO-2022-JP')); // 送信先メールアドレスと名前 // 件名 $mail->Body = mb_convert_encoding($name, "JIS","UTF-8"); // 本文 $mail->Body = mb_convert_encoding($furigana, "JIS","UTF-8"); // 本文 // 送信 $mail->send(); echo '送信済み'; } catch (Exception $e) { echo "送信失敗: {$mail->ErrorInfo}"; } ?> <!DOCTYPE html> <html> <head> <meta charset ="utf-8"> </head> <body> </body> </html>

  • PHP
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6644/9412)
回答No.1

>エラー名;Undefined type'PHPMailer/PHPMailer/PHPMailer' これはそもそも、PHPmailerライブラリがインストールされていない、ってことでしょう。 >PHPMailer の使い方 >https://www.webdesignleaves.com/pr/php/php_phpmailer.php こちらなどを参考に、自分のサーバにインストールしてください。 そうすれば、そのコードも動くと思います。

hayosat
質問者

お礼

ありがとうございました。インストールからきちっと理解して見ようと思います。ありがとうございました。感謝です。

関連するQ&A

  • PHPMailerのメール受信の文字化けについて

    PHPMailerのメール受信の文字化けについて 付属画像のように日本語文が文字化けしてしまいます。 2台のスマホで受信したのですが、件名の部分と本文の両方文字化けします。もう一つのスマホは本文のみ文字化けします。。ちなみにパソコンで入力フォームで打った文章なのですが、自分のスマホに自動転送された、文字(本文)やタイトルが文字化けしてしまいます。文字化けしないようにするには、どうコードを書いたらよいでしょうか? やっと、やっと、メールの自動転送まで出来たのですが、つまづいています。 ちなみに、学生でもエンジニアでもありません。仕事の合間に独学で勉強しているものです。いずれ実務では使いますが。低レベルな質問ですみません。 回答よろしくお願いいたします コードは以下になります。 <?php // PHPMailer クラスをネーム空間にインポート use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; require('PHPMailer/src/PHPMailer.php'); require('PHPMailer/src/Exception.php'); require('PHPMailer/src/SMTP.php'); // 入力内容の取得・変数に格納 $name    = $_POST['name'];     // 氏名 $to      = $_POST['to'];       // メールアドレス $subject = $_POST['subject'];  // 件名 $message = $_POST['message'];  // 本文 // メール日本語対応 mb_language("japanese"); mb_internal_encoding("UTF-8"); // インスタンス生成 $mail = new PHPMailer(true); // 文字エンコードを指定 $mail->CharSet = 'utf-8'; try {     // デバッグ設定     // $mail->SMTPDebug = 2; // デバッグ出力を有効化(レベルを指定)     // $mail->Debugoutput = function($str, $level) {echo "debug level $level; message: $str<br>";};        // SMTPサーバの設定     $mail->isSMTP();                          // SMTPの使用宣言     $mail->Host       = '△.xrea.com';   // SMTPサーバーを指定     $mail->SMTPAuth   = true;                 // SMTP authenticationを有効化     $mail->Username   = '■■■@www.com.jp';   // SMTPサーバーのユーザ名     $mail->Password   = '△△△';           // SMTPサーバーのパスワード     $mail->SMTPSecure = 'tls';  // 暗号化を有効(tls or ssl)無効の場合はfalse     $mail->Port       = 465; // TCPポートを指定(tlsの場合は465や587)             // メール本体     $mail->setFrom('■■■@www.com.jp', 'hazuki');  // 送信元メールアドレスと名前     $mail->addAddress($to, mb_encode_mimeheader($name, 'ISO-2022-JP'));  // 送信先メールアドレスと名前     $mail->Subject = mb_encode_mimeheader($subject, 'ISO-2022-JP');  // 件名     $mail->Body    = mb_convert_encoding($message, "JIS","UTF-8");  // 本文 // 送信     $mail->send();     echo '送信済み'; } catch (Exception $e) {     echo "送信失敗: {$mail->ErrorInfo}"; } ?>

    • ベストアンサー
    • PHP
  • メールフォームが部分的に文字化けする

    お問い合わせメールフォームを作りました。 一部のお客様からのメールが部分的に文字化けします。 ========== E月E6日に宿泊させてぁEだきました� そE際E対応でどぁEても納得できなかった為メールしました� ========== メールフォーム自体は UTF-8 でエンコードしていて、メール送信の際に JIS にしています。 ========== <?php mb_language("Japanese"); mb_internal_encoding("utf-8"); [snip] $from_name = mb_convert_encoding($from_name, "JIS", "UTF-8"); $from_name = '=?ISO-2022-JP?B?'.base64_encode($from_name).'?='; $body = mb_convert_encoding($body, "JIS", "UTF-8"); [snip] $mail_true = @mb_send_mail($mailto, $subject, $body, $additional_headers); [snip]

    • ベストアンサー
    • PHP
  • WordPressの質問(q10063418)の続

    参考サイトを見てsmtp設定をPHP側で試しているのですが、メールの送信のやり方がわかりません。 テストメールをwp_mail()から送信してみるというコードをファイルに書き込んでもメールが届いていない状態です。 Hostは契約時のメール内容から、Port番号はカラフルボックスの案内から、Username、Password、From はCpanelの設定画面から確認しているのですが… 何か抜けているのでしょうか? localhost環境でも試してみようかと考えております。 ※接続ポート番号について https://help.colorfulbox.jp/manual/mail-spec-list/ ※実装コード add_action("phpmailer_init", "send_smtp_email"); function send_smtp_email( $phpmailer ) { $phpmailer->isSMTP(); $phpmailer->Host = "[mail.last.cfbx.jp]"; $phpmailer->SMTPAuth = true; $phpmailer->Port = 587; $phpmailer->SMTPSecure = "tls"; $phpmailer->Username = "[test@last.cfbx.jp]"; $phpmailer->Password = "[takuya7530]"; $phpmailer->From = "[test@last.cfbx.jp]"; $phpmailer->FromName = "[test]"; } ※テストメールをwp_mail()から送信(t******@gmail.comは確認用のメールアドレス) wp_mail( "t******@gmail.com", "届きましたか?", /// => サブジェクト(件名) "このメールが見れたなら設定は完ぺき!" /// => ボディ(メール内容) ); ※参考サイト 1,https://qiita.com/e__ri/items/857b12e73080019e00b5 2,https://fukuro-press.com/wordpress-send-email-with-smtp/

    • ベストアンサー
    • PHP
  • PHP 入力フォームで入力された情報が、折り返しメ

    PHP 入力フォームで入力された情報が、折り返しメールに表示されません。 折り返しメールに入力フォームに入力された内容の確認と「 下記の情報を受け取りました」など、折り返しメールに表示させたくて以下のコードに書き直したのですが、 受信はできたのですが、表示されたのは、コードに記載した情報「$mail->Body = "▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△」の▼△だけでした。 入力された名前やアドレスを折り返しメールをお問い合わせメッセージと共に受け取りたいのですが、$mail->Bodyにいくつか情報を書いてみたのですがうまくいきません。 付属画像はコード変更前と後の画像になります。確認画面の表示の機能とセキュリティ対策に$_SESSIONと tokenが追加されてす。字数制限の為、PHPMailerを使うコードですが、インポートやcomserの記述 // SMTPサーバの設定などのポート番号やパスワード等の記述もカットしています。 どこが間違っているのでしょうか?詳しい方回答よろしくお願いいたします。 どこが間違っているのでしょうか?詳しい方回答よろしくお願いいたします。 <?php // 入力内容の取得・変数に格納 session_start(); if(isset($_POST['token'], $_SESSION['token']) && ($_POST['token'] === $_SESSION['token'])){ unset($_SESSION['token']); $name = $_SESSION['name']; $email = $_SESSION['email']; } // メール日本語対応 mb_language("japanese"); mb_internal_encoding("UTF-8"); // インスタンス生成 $mail = new PHPMailer(true); // 文字エンコードを指定 $mail->CharSet = 'utf-8'; try { // デバッグ設定 // $mail->SMTPDebug = 2; // デバッグ出力を有効化(レベルを指定) // $mail->Debugoutput = function($str, $level) {echo "debug level $level; message: $str<br>";}; // SMTPサーバの設定 $mail->isSMTP(); // メール本体 $mail->setFrom('〇〇@', 'kkk'); // 送信元メールアドレスと名前 $mail->addAddress($email,$name); // 送信先メールアドレスと名前 $mail->Body = "お名前:".$name."\n"; $mail->Body = "下記の情報を受け取りました。\n内容を確認し、こちらから折り返し、ライン又はメールアドレスにてご案内させて頂きます。\n\n"; $mail->Body = "メールアドレス:".$email."\n"; $mail->Body = "▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼\n"; $mail->Body = "【Web担当者の作り方】\n"; $mail->Body = "メール:〇〇@\n"; $mail->Body = "URL:https://www.web-officer.com/\n"; $mail->Body = "▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼△▼\n"; // 送信 $mail->send(); echo '送信済み'; } catch (Exception $e) { echo "送信失敗: {$mail->ErrorInfo}"; } ?>

    • ベストアンサー
    • PHP
  • PHPMailerを使ってのSTMPメール

    PHPMailerを使ってのSTMPメールの折り返し受信のコードを書いているのですが、付属画像のように「件名なし」の部分にタイトルを入れたいのですが、どうコードを書いたら良いでしょうか? 回答よろしくお願いいたします。 コードは以下になります。 // メール本体    $mail->setFrom('〇〇com', 'maru');  // 送信元メールアドレスと名前    $mail->addAddress($email,$name);  // 送信先メールアドレスと名前              $mail->Body    = "下記の情報を受け取りました。\n内容を確認し、こちらから折り返し、ライン又はメールアドレスにてご案内させて頂きます。\n\n";        $mail->Body    .= "お名前:".$name."\n";     $mail->Body    .= "フリガナ:".$furigana."\n";    $mail->Body    .= "メールアドレス:".$email."\n";    $mail->Body    .= "電話番号:".$tel."\n";

    • ベストアンサー
    • PHP
  • UTF8コードでのメール送信

    現在、以下の内容でメールサーバおよびシステムを運用してます。 レンタルサーバを以下の内容で OS:FreeBsd DB:postgresql (eucコードで運用) PG:perl5.8.8  (eucコードで記述) 最近、当システムから携帯電話(スマートフォン含む)へのメール送信で受信側(携帯)で文字化けが多くなっている。それで、システムの一部のUTF8化しようと思いました。それで、メール送信のライブラリを以下のように修正してみたが、本文が文字化けしてしまいます。なぜ文字するか原因がわかりません。 以下のソースはUTF8Nで記述しています。 ※システム全部をUTF8コード化やDB(POSTGRESQL)もUTF8にする案もありますが、 改修作業が大きくて作業時間が少ない方法も模索しています。 どなたかご教授願います。 binmode(STDOUT, ":utf8"); use Encode; use Encode qw(from_to); use MIME::Base64; use MIME::Entity; use Net::SMTP; use MIME::Words qw (:all); sub sendmail() { my ($mail_date) = @_; <==メールのハッシュ配列(DBに登録されているメールの件名、本文) my $smtp_server = $mail_date->{SMTPsrv}; my $smtp_port = '25'; # 送信者のメールアドレスを設定する。 my $mail_from = $mail_date->{MailFr}; # 宛先のメールアドレスを設定する。 my $mail_to = $mail_date->{MailTo}; # メールの件名を設定する。 from_to($mail_date->{Subjct},"euc-jp","utf8"); #UTF8に変換 $utf8_str_sub = $mail_date->{Subjct}; # メールの内容を設定する。 my $message; my $utf8_str; from_to($mail_date->{Message},"euc-jp","utf8"); #UTF8に変換 $message = $mail_date->{Message}; $utf8_str = $message; # メールヘッダを作成する。 # from、to、件名共にMIME-Header(UTF-8)へエンコードします。 my $mail_header; $mail_header = "From: " .encode('MIME-Header-ISO_2022_JP',$mail_from)."\n"; $mail_header .= "To: " .encode('MIME-Header-ISO_2022_JP',$mail_to) ."\n"; $mail_header .= "Subject: ".encode('MIME-Header-ISO_2022_JP',$utf8_str_sub) ."\n"; # UTF-8とbase64 encodeを使う事を明記します。 $mail_header .= "MIME-Version: 1.0\n"; $mail_header .= "Content-type: text/plain; charset=utf-8\n"; $mail_header .= "Content-Transfer-Encoding: base64\n"; $mail_header .= "\n"; # SMTPでメールを送る。 my $SMTP = Net::SMTP->new($smtp_server,Port=>$smtp_port); $SMTP->mail($mail_from); $SMTP->to($mail_to); $SMTP->data(); $SMTP->datasend($mail_header); $SMTP->datasend(encode_base64(encode('utf8', $utf8_str))); $SMTP->dataend(); $SMTP->quit; }

  • SMTP接続でのPEARメール送信の差出人がsoftbankのみ表示さ

    SMTP接続でのPEARメール送信の差出人がsoftbankのみ表示されなくて困っております。 require_once("Mail.php"); require_once("Mail/mimeDecode.php"); mb_internal_encoding('UTF-8'); mb_language("ja"); $params = array( "host" => "***", "port" => 587, "auth" => true, "username" => "***", "password" => "***" ); $mailObject = Mail::factory("smtp", $params); $internal = 'utf-8'; $input = 'utf-8'; $target = 'ISO-2022-JP'; $recipients = "hoge@hoge.com"; $from_name = "日本語"; $from_name = mb_convert_encoding($from_name,$input,mb_detect_encoding($from_name)); $subject = "テスト"; $subject = mb_convert_encoding($subject,$input,mb_detect_encoding($subject)); $headers = array( "To" => $from, "From" => mb_encode_mimeheader($from_name,$target)."<***>", "Subject" => mb_encode_mimeheader($subject,$target), "Return-Path" => mb_encode_mimeheader($subject,$target)."<***>", ); $body = "テスト"; $body = mb_convert_encoding($body,$target,mb_detect_encoding($body)); $mailObject -> send($recipients, $headers, $body); なかなか説明が難しいので、手っ取り早くコードを書き出しましたが、 このphpファイルを使ってメールを送信しますと、 PCメール、WEBメール(hotmail)、携帯メール(DOCOMO,AU,SOFTBANK) 全て文字化けなく送信出来ている状況です。 上記のうち、差出人が受信側で表示されるのはDOCOMO以外全てだと思うのですが、 (もちろん携帯は機種によっては例外的に表示されないのもあるかと) 他のPCメールからは日本語の差出人が確認できるSOFTBANK機種でメールを 受信しますと、(差出人が設定されていない場合と同じ)メールアドレスのみが 表示されてしまう状態です。 前述のphpファイルは、SOFTBANK以外の差出人設定可能なPC,WEB,AUは 全て差出人の設定が確認できております。その問題のSOFTBANKも、差出人が 設定されないだけで、件名本文ともに文字化けせず、正常に受信が出来ています。 ネットで色々と探してみましたが、同様の状況が確認できず、 どなたかお力添えいただけましたら幸いかと思い、質問した次第です。 どうかよろしくお願いいたします。

    • 締切済み
    • PHP
  • PHP 旧漢字(高崎)文字化け メール送信時

    PHP 旧漢字(高崎)文字化け メール送信時 いつもお世話になっております。 PHPでお問い合わせページを作成しています。 メール送信時に、旧漢字(高・崎など)が文字化けを起します。 色々と調べてみましたが少し急いでいることもあり焦ってなかなか解決できません。 【環境】 OS:windows xp PHP:5.3 内部コード:UTF-8 以下サンプルコードです。 ************************************************************* $name = "髙井 太郎"; $to1 = "aaa@aaa.ne.jp"; $subject = "申込完了メール"; $header = "From:bbb@bbb.ne.jp"; $body1 =<<<BODY1 ★申込完了メール★\n \n 申込責任者   :{$name}\n \n BODY1; mb_language("Japanese"); mb_internal_encoding("UTF-8"); //文字コードを"UTF-8"へ変更 $ret = mb_send_mail($to1,$subject,$body1,$header); ************************************************************* この状態で送ると、ヒアドキュメント内の{$name}の「髙」が「?」に変換されてしまいます。 ご教授いただければ幸いです。 宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • HTMLの送信ボタンで送信されずコードが表示される

    HTMLのフォームに設定した値がサーバーに送信されて、 どのように回収するのか基本的なことが まだよく理解できていないのですが、 https://www.sejuku.net/blog/24658 のサイトの情報を参考にして、 下記のコードのファイル(mailform.htmlとmail.php)を作成して、 Microsoft Edge ( Internet Explorerでも同じ) で、 mailform.htmlのファイルを読み込むと、 フォームが表示されるので、 受信者に自分のメールアドレス タイトルにTEST 本文にテスト と入力して送信ボタンを押すと、 私の理解が正しければ、 自分の所にフォームに設定した値(TESTとテスト)のメールが 届くと思われますが、 なぜか、 Edgeの画面には、 mail.phpの中身のコードが表示されてしまいます。 メールも送られてきません。 ./mail.phpの部分をフルパスで指定しても同じです。 なぜでしょうか。 よろしくお願いします。(Windows10,IE,Edge) ---mailform.html------------------------------------------- <html> <head> <meta charset="utf-8" /> <script type="text/javascript" charset="UTF-8"></script> </head> <body> <form action="./mail.php" method="post"> <p>受信者</p><input type="text" name="to"> <p>タイトル</p><input type="text" name="title"> <p>本文</p><textarea name="content" cols="50" rows="5"></textarea> <p><input type="submit" name="send" value="送信"></p> </form> </body> </html> ---mail.php------------------------------------------- <html> <head> <meta charset="utf-8" /> </head> <body> <?php mb_language("Japanese"); mb_internal_encoding("UTF-8"); $to = $_POST['to']; $title = $_POST['title']; $content = $_POST['content']; if(mb_send_mail($to, $title, $content)){ echo "メールを送信しました"; } else { echo "メールの送信に失敗しました"; } ?> </body> </html> -------------------------------------------------------

    • ベストアンサー
    • HTML
  • gmail エラーコード008の解決法?

    gmailにファイルを添付して送ろうとすると、あとでもう一度やり直してください[エラーコード008]、というのがでて、何もおくれません。どなたか解決法ご存知ですか?ちなみに添付しようとしているのは音声ファイルで、21.4MBです。