🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
さくらのレンタルサーバ

さくらのレンタルサーバとは、格安サーバーで知られるさくらインターネット社の提供する共有レンタルサーバー。Webサイトの構築から簡単なプログラミングまで幅広く利用することができ、プランが多いことも特徴です。

PHP

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

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

4536閲覧

さくらサーバーでオリジナルのお問い合わせフォームを使い、作成した形式でメール送信をしたい

syougosty

総合スコア27

さくらのレンタルサーバ

さくらのレンタルサーバとは、格安サーバーで知られるさくらインターネット社の提供する共有レンタルサーバー。Webサイトの構築から簡単なプログラミングまで幅広く利用することができ、プランが多いことも特徴です。

PHP

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

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/12/25 18:44

現在作成中のWebサイトにお問い合わせフォームを設けました。
フォームに必要事項を入力して「確認」ボタン押すと確認ページに飛び、その画面で「送信」ボタンを押すと送信完了画面に飛び、フォームを送信したユーザに確認メールがいくようにしてます。
しかし、フォームに入力したメールアドレスにメールはいくのですが、差出人が User ○○○ となり、件名にユーザが入力した名前が入り、本文にはテキストエリアに入力された文字がそのまま表示されるだけになってしまい、送信元のメールアドレスが指定したgmailのアドレスではなく ○○○○@○○○○.sakura.ne.jpになってしまいます。
イメージ説明
イメージ説明
以下のコード通りにメールを送信するにはどうすればよいのでしょうか?
さくらサーバー側での設定が必要なのでしょうか?
コード自体に誤りがある場合は指摘してくださると幸いです。

php

1<?php 2 //対策 3 function h($str){ 4 return htmlspecialchars($str,ENT_QUOTES,'UTF-8'); 5 } 6 7 //データ格納 8 if($_SERVER["REQUEST_METHOD"] == "POST"){ 9 $name = h(@$_POST["name"]); 10 $mail = h(@$_POST["mail"]); 11 $comment = h(@$_POST["comment"]); 12 } 13 14 15 //送信ボタン押したら    16 if(isset($_POST["send"])){ 17 mb_language("ja"); 18 mb_internal_encoding("UTF-8"); 19 20 $subject ="[自動送信] お問い合わせ内容の確認"; 21 22 $body = <<< EMO 23 {$name}24 25 お問い合わせありがとうございます。 26 以下のお問い合わせ内容を、メールにて確認させていただきました。 27 28 =================================================== 29 【 お名前 】 30 {$name} 31 32 【 メール 】 33 {$mail} 34 35 【 内容 】 36 {$comment} 37 =================================================== 38 39 内容を確認のうえ、回答させて頂きます。 40 しばらくお待ちください。 41 EMO; 42 //送信元メールアドレス格納 43 $fromEmail = "○○○○○○@gmail.com"; 44 45 //送信元名前格納 46 $fromName = "△△△△△"; 47 48 //ヘッダ情報格納 49 $header = "From: " .mb_encode_mimeheader($fromName) ."<{$fromEmail}>"; 50 51 //メール送信を行う 52 mb_send_mail($mail,$subject,$body,$header); 53 header("success.php"); 54 exit; 55 } 56 ?> 57 58<html> 59<head> 60 <meta charset="utf-8"> 61 <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0"> 62 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 63 <title>確認画面</title> 64 <link rel="stylesheet" href="css/resetstylesheet.css"> 65 <link rel="stylesheet" href="css/confirmation.css"> 66</head> 67 68<body> 69 70 <h2>以下の内容で送信しますか?</h2> 71 <form action="success.php" method="POST"> 72 <input type="hidden" name="name" value="<?php echo $name; ?>"> 73 <input type="hidden" name="mail" value="<?php echo $mail; ?>"> 74 <input type="hidden" name="comment" value="<?php echo $comment; ?>"> 75 76 <div class="c-table"> 77 <dl> 78 <dt> 79 名前 80 </dt> 81 <dd> 82 <?php echo $name; ?> 83 </dd> 84 </dl> 85 <dl> 86 <dt> 87 メールアドレス 88 </dt> 89 <dd> 90 <?php echo $mail; ?> 91 </dd> 92 </dl> 93 <dl> 94 <dt> 95 問い合わせ内容 : 96 </dt> 97 <dd> 98 <?php echo $comment; ?> 99 </dd> 100 </dl> 101 102 </div> 103 <div class="btn-area"> 104 <input type="button" onclick="history.go(-1)" value="戻る"> 105 <input type="submit" name="send" value="送信"> 106 </div> 107 </form> 108</body> 109 110</html> 111

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

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

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

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

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

guest

回答2

0

結局fromにさくらのアドレスは記載されたままであります。

質問は、すでに解決済みになっていますが... 目についたのでヒントだけ記載しておきます。

さくらインターネットのレンタルサーバーの場合、おそらく mb_send_mail (というか sendmail の設定)で、送信者が利用しているサーバーのFQDN に固定されている(強制されている)のではないでしょうか。

任意のドメインを使用してメールを送信したい場合は、使用したいドメインの SMTP サーバー(メール送信サーバー)を用意する必要があります。
そして、用意した smtp サーバーに接続して ドメインの SMTP サーバー経由で送信する必要があると思われます。

PHP の場合は、SMTP サーバー経由でメールを送信する方法として、PHPMailer がよく使われているのではないかと思います。

PHPMailer を使用して、gmail 経由で送信する方法は、検索するといろいろ見つかると思われますので、まずは、試してみてください。

また、gmail や携帯ドメイン宛等を始めとして、ドメインを詐称したメールは、迷惑メールの疑いがあるとして受信拒否や迷惑メールフォルダに分類される場合も多いと思いますので、常に正しいドメインで送信する方法を理解しておくと良いと思います。

投稿2019/12/26 00:58

CHERRY

総合スコア25218

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

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

syougosty

2019/12/26 01:52

ありがとうございます! 確かに送信者をgmaiにしてフォームを送信した場合、迷惑メール警告がでました。なので今はさくらサーバーのメールアドレスを送信者に設定しておきました。 PHP周りのSMTPサーバー等の勉強します。
guest

0

自己解決

formの <form action="success.php" method="POST"> を <form action="confirmation.php" method="POST"> に変更したらうまくいきました。
success.phpへは、PHPのheader()で指定して飛ばすようにしました。

投稿2019/12/25 19:38

syougosty

総合スコア27

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

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

scsi

2019/12/25 22:04

さくらのレンタルサーバーからgmail.comをfromにしたメールを送信したらアドレス詐称ですよ。
syougosty

2019/12/25 23:49

結局fromにさくらのアドレスは記載されたままであります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問