• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPMailerを使ってのSTMPメール)

PHPMailerを使ってのSTMPメールのタイトルを作成する方法

このQ&Aのポイント
  • PHPMailerを使用してSTMPメールの折り返し受信のコードを記述しています。タイトルに「件名なし」の部分にサブジェクトを入れたい場合、どのようにコードを書けば良いですか?
  • PHPMailerでSTMPメールを送信する際に、タイトルに「件名なし」の部分に任意のサブジェクトを入力する方法を教えてください。
  • PHPMailerを使ってSTMPメールを送信する際、メールのサブジェクトを「件名なし」の部分に設定する方法を教えてください。

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

  • ベストアンサー
回答No.2

$mail->Subject = mb_encode_mimeheader('タイトル'); そのままの代入でもほとんどのメーラーで表示はできるのですが。 正式なエンコードを入れたほうが、受信時の挙動は安定するでしょう。

hayosat
質問者

お礼

ありがとうございました。解決出来ました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

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

$mail->Subject = '任意の件名'; を書いとけば入るはずなのですが、どうでしょうか?

hayosat
質問者

お礼

ありがとうございました。解決出来ました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 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
  • メール送信できない

    PHPでメールが送信できなくて困っています。 自分なりに下記のプログラムを書いてみたのですが $furiganaや$nameに何か文字や数字を入れても結果として ===送信されたメールの内容===== メール内容 [ふりがな] $furigana [名前] $name [内容]$naiyou ============ という形、つまり変数がそのまま変数名として メールに送られてしまいます。 変数に特定のフォームから取得した内容を 入れたい場合どのように記載すれば いいのでしょうか? お時間がある方、大変恐れ入りますが お教えいただければ幸いです。 <?php $furigana = $_POST['furigana']; $name = $_POST['name']; $naiyou = $_POST['naiyou']; // 準備 $mlfr = '111@domain.jp'; $mlto = '111@domein.jp'; $mlsb = 'メール'; $mlms = 'メール内容' . "\n"; $mlms = $mlms . '[ふりがな]$furigana ' . "\n"; $mlms = $mlms . '[名前]$name ' . "\n"; $mlms = $mlms . '[内容]$naiyou' . "\n"; $jcph = '.'; // メール送信 $rcd = mb_send_mail($mlto, $mlsb, $mlms, $mlfr); ?> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <TITLE>メール送信テスト</TITLE> </HEAD> <BODY> <P align="center">▼ メール送信テスト ▼</P> <HR> <DIV> <?php if ($rcd) { print "<P>メール送信完了</P>"; } else { print "<P>メール送信エラー</P>"; } ?> </DIV> <HR> </BODY> </HTML>

    • ベストアンサー
    • 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
  • phpのメール送信での質問になります

    メールとお問い合わせ内容は届くのですが、名前とアドレスが届かないので間違っている箇所を教えていただけるとありがたいです。 以下コードになります。 html <body> <main> <section> <h2>お問合せ内容の確認</h2> <form action="mailto.php" method="post"> <div class="contant-area"> <div class="label-container"> <label class="item intem-name">名前</label> <label class="item item-email">メールアドレス</label> <label class="item item-message">問い合わせ内容</label> </div> <div class="text"> <p class="item-post" name="name"><?php echo $_POST["name"]; ?></p> <p class="item-post" name="email"><?php echo $_POST["email"]; ?></p> <textarea class="item-post item-textarea" name="message"><?php echo $_POST["message"]; ?></textarea> </div> </div> <div class="button-area"> <input type="submit" value="送信"> </div> </form> </section> </main> </body> php <?php // フォームデータの取得 $name = $_POST[&#039;name&#039;]; $email = $_POST[&#039;email&#039;]; $message = $_POST[&#039;message&#039;]; // 送信先のメールアドレス $to = &#039;*****@gmail.com&#039;; // 件名 $subject = &#039;お問い合わせがありました&#039;; // メール本文 $body = "名前: $name\n"; $body .= "メールアドレス: $email\n"; $body .= "問い合わせ内容:\n$message"; // 送信元のメールアドレスと名前 $from = &#039;*****1690.xsrv.jp&#039;; $fromName = &#039;お問い合わせフォーム&#039;; // ヘッダー $headers = "From: $fromName <$from>"; // メール送信 $mailResult = mail($to, $subject, $body, $headers); ?>

    • ベストアンサー
    • PHP
  • メールフォームにある必須入力について

    こんばんは、今メールフォームを作っています。入力画面→確認画面→完了ページという流れで作ったのですがよく必須項目に何も入れなかったり、間違った文字をいれたりするとエラーページが表示されるようにしたいと思っているのですが、なかなか上手くできません。下記のスクリプトからだとどうやってやったら良いのでしょうか?よろしくおねがいします。 <?php if (! isset($_POST[btn1]) and! isset($_POST[btn2]) and! isset($_POST[cancel])) { //入力画面 $body = "必要な項目を入力して[OK]ボタンをクリックしてください。 <FORM action='$_SERVER[PHP_SELF]' method='POST'> 名前:<INPUT size='40' type='text' name='name'><BR><BR> フリガナ:<INPUT size='40' type='text' name='kana'><BR><BR> 電話番号:<INPUT size='40' type='text' name='tel'><BR><BR> E-Mailアドレス:<INPUT size='40' type='text' name='email'><BR><BR> お問い合わせ内容:<BR><TEXTAREA rows='6' cols='40' name='inquiry'></TEXTAREA><BR><BR> <INPUT type='submit' name='btn1' value=' OK '> </FORM>"; } elseif (isset($_POST[btn1])) { //入力画面で[OK]がクリックされたとき $name = htmlspecialchars(stripcslashes($_POST[name])); $kana = htmlspecialchars(stripcslashes($_POST[kana])); $tel = htmlspecialchars(stripcslashes($_POST[tel])); $email = htmlspecialchars(stripcslashes($_POST[email])); $inquiry = htmlspecialchars(stripcslashes($_POST[inquiry])); $body = "ご入力した内容でメッセージを送信します。<BR> よろしければ[送信]ボタンをクリックしてください。 <FORM action='$_SERVER[PHP_SELF]' method='POST'> 名前:$name<BR><BR> フリガナ:$kana<BR><BR> 電話番号:$tel<BR><BR> E-Mailアドレス:$email<BR><BR> お問い合わせ内容:<BR>" . nl2br($inquiry) . "<BR><BR> <INPUT type='submit' name='btn2' value=' 送信 '> <INPUT type='submit' name='cancel' value='キャンセル'> <INPUT type='hidden' name='name' value=\"$name\"> <INPUT type='hidden' name='kana' value=\"$kana\"> <INPUT type='hidden' name='tel' value=\"$tel\"> <INPUT type='hidden' name='email' value=\"$email\"> <INPUT type='hidden' name='inquiry' value=\"$inquiry\"> </FORM>"; } elseif (isset($_POST[btn2])) { //確認画面で[送信]がクリックされたとき //メールの送信処理を行う $name = stripcslashes($_POST[name]); $kana = stripcslashes($_POST[kana]); $tel = stripcslashes($_POST[tel]); $email = stripcslashes($_POST[email]); $inquiry = stripcslashes($_POST[inquiry]); $mailto = "kuma202000@yahoo.co.jp"; $mailsbj = "メールフォームからの送信"; $mailbody = "$name さんからのメールが届きました。\n" . "---------------------------------------------\n" . "名前:$name \n" . "フリガナ:$kana \n" . "電話番号:$tel \n" . "E-Mailアドレス:$email \n" . "メッセージ:$inquiry \n" . "---------------------------------------------\n"; mb_language("ja"); if (mb_send_mail($mailto, $mailsbj, $mailbody, $mailheader)) { $body = "メールを送信しました。ありがとうございました。<BR><BR>"; } else { $body = "メールの送信に失敗しました。<BR><BR>"; } $body .= "<A href='$_SERVER[PHP_SELF]'>戻る</A>"; } elseif (isset($_POST[cancel])) { //確認画面で[キャンセル]がクリックされたとき header("location: $_SERVER[PHP_SELF]"); exit(); } ?> <HTML> <HEAD> </HEAD> <BODY> <?=$body?> </BODY> </HTML>

    • 締切済み
    • PHP
  • 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
  • こんにちは。PHPでメールフォームを送信したいのですが、

    こんにちは。PHPでメールフォームを送信したいのですが、 メールが文字化けしてしまいます。 PHP初心者です。 時間をかけてゆっくりやりたいのですが、 仕事でやっているため、そうも言ってられず。。。 ======================================================= $msg= 'Name: '.$_POST['name'].'<br /> Email: '.$_POST['email'].'<br /> IP: '.$_SERVER['REMOTE_ADDR'].'<br /><br /> Message:<br /><br /> '.nl2br($_POST['message']).' '; $mail = new PHPMailer(); $mail->IsMail(); $mail->AddReplyTo($_POST['email'], $_POST['name']); $mail->AddAddress($emailAddress); $mail->SetFrom($_POST['email'], $_POST['name']); $mail->Subject = "A new ".mb_strtolower($_POST['subject'])." from ".$_POST['name']." | contact form feedback"; $mail->MsgHTML($msg); $mail->Send(); ========================================================================= 一部ですが、こちらを修正すればよいのでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • phpのシンプルなメールフォーム

    あるサイトにて、単一phpのメールフォームのソースをコピーし、使用としましたが、 設定したメールアドレスに、送信ボタンを押しましたが、 受信されません。  ・送信後、「メールを送信しました」と表示されます。  ・送信のあて先は、何も反応なし。  ・ソースの「●●@●●」はダミーです。 以下ソースです。原因がわかりますでしょうか。ご教授のほどよろしくお願いします。 ―――――――――――――――――――――――――――――――――――― <?php // 送信フラグ $send_flg = false; // エラーメッセージ $err_msg = array(); // 送信ボタンを押した後の処理 if ($_POST["post_flg"]) { // エラー if ($_POST["name"] == "") { $err_msg[] = "「お名前」は必須です"; } if ($_POST["email"] == "") { $err_msg[] = "「メールアドレス」は必須です"; } // エラーが無ければ送信 if (count($err_msg) == 0) { // 宛先 $mail_to = "●●@●●"; // 送信元アドレス $mail_from = "form@example.com"; // 件名 $mail_subject = "メールフォームから送信がありました"; // 本文 $mail_body = ""; $mail_body.= "■お名前\n".$_POST["name"]."\n\n"; $mail_body.= "■メールアドレス\n".$_POST["email"]."\n\n"; $mail_body.= "■コメント\n".$_POST["comment"]; // 送信処理 mb_language("Japanese"); mb_internal_encoding("UTF-8"); mb_send_mail($mail_to, $mail_subject, $mail_body, "From: <".$mail_from.">"); $send_flg = true; $_POST = array(); } } ?> <!DOCTYPE HTML> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>メールフォーム</title> </head> <body> <?php // 初期フォーム表示 if (!$send_flg) { ?> <h1>メールフォーム</h1> <?php // エラーメッセージがある場合 if (count($err_msg) > 0) { ?> <p style="color:red;"> <?php foreach ($err_msg as $val) { ?> ※<?php echo $val ?><br> <?php } ?> </p> <?php } ?> <form action="mail.php" method="post"> <p> お名前<br> <input type="text" cols="30" name="name" value="<?php echo $_POST["name"] ?>"><br> </p> <p> メールアドレス<br> <input type="text" cols="30" name="email" value="<?php echo $_POST["email"] ?>"><br> </p> <p> コメント<br> <textarea name="comment" cols="50" rows="10"><?php echo $_POST["comment"] ?></textarea><br> </p> <input type="submit" name="post_flg" value="送信する"><br> </form> <?php // メール送信後の表示 } else { ?> <br><br><br><br>メールを送信しました。<br> <?php } ?> </body> </html> ――――――――――――――――――――――――――――――――――――

    • ベストアンサー
    • PHP
  • 問い合わせフォームからPHPを使って、、、、、

    問い合わせフォームからPHPを使って指定のアドレスにメールを送ろうとしているのですが、届きません、、、、、、 原因が分かりません。助けていただけないでしょうか。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>お問い合わせページ</title> <link rel="stylesheet" href="styles.css"> </head> <body> <h1>お問い合わせページ</h1> <form action="send_email.php" method="post"> <label for="name">お名前:</label> <input type="text" id="name" name="name" required><br><br> <label for="email">メールアドレス:</label> <input type="email" id="email" name="email" required><br><br> <label for="message">お問い合わせ内容:</label><br> <textarea id="message" name="message" rows="4" cols="50" required></textarea><br><br> <input type="submit" value="送信"> </form> </body> </html> \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 以下がPHPのプログラムです。 <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = $_POST["name"]; $email = $_POST["email"]; $message = $_POST["message"]; // 送信先のメールアドレス $to = "***@gmail.com"; // 件名 $subject = "お問い合わせがありました"; // 本文 $body = "お名前: $name\n"; $body .= "メールアドレス: $email\n\n"; $body .= "お問い合わせ内容:\n$message"; // メールを送信 mail($to, $subject, $body); // 送信後のリダイレクト header("Location: thank_you.html"); exit; } ?>

    • 締切済み
    • PHP
  • メール送信プログラム

    いつもお世話になっております。 今まで動いていたメール送信のプログラムが正常に動かなくなりました。メールは送信されるのですが、ボディーの箇所とヘッダーの箇所の変数部分にあたるところが空白になってしまいます。 今までは正常に動いていたんです、SJISからUTF-8に移行したからなんでしょうか? 本番環境(SJIS)(サーバー:ロリポップ)のほうもなぜかいじっていないのにちゃんと動作しなくなっています。 以下、ロジックです(UTF-8にしたもの)。 <?php mb_language("Ja"); mb_internal_encoding("UTF-8"); $to = "test@test.com"; $title = "お問い合わせ"; $body = "■名前\n$contact_name\n ■メールアドレス\n$contact_email\n ■お問い合わせ内容\n$contact_naiyou\n"; $headers = "From:$contact_name<$contact_email>"; if(mb_send_mail($to, $title, $body, $headers)) { print "お問い合わせありがとうございます。"; } else { print "送信出来ませんでした。"; } ?> 推測されること等ありましたら、ご教授よろしくお願いします。

    • ベストアンサー
    • PHP