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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

メール

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

Q&A

2回答

904閲覧

DBに登録されているメールアドレスに一件づつ送信

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

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

メール

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

0グッド

0クリップ

投稿2020/06/07 10:27

前提・実現したいこと

メールを一斉送信する機能は付いたのですが、問題点があります。
DBに登録されているメールアドレスすべてに送信するため、ユーザーがメールの「To」を見ると登録されているメールアドレスをすべて見れてしまうのです。
なので、1件づつ全く同じ内容のメールを送信できないかと思ったのですが、コードが思いつきません。
どなたかコードが分かる方はいませんか?
分かる方は教えていただきたいです。

補足
一件づつ送信ではなくても、メールを受信した方が登録ユーザーのメールアドレスを見る事が出来なければ大丈夫です。

メール一斉送信機能

PHP

1<html> 2<head> 3<title>hoge</title> 4</head> 5<center> 6 7 8<?php 9//データベース接続 10$server = "localhost"; 11$userName = "hogehoge"; 12$password = "hogehoge"; 13$dbName = "hogehoge"; 14 15$mysqli = new mysqli($server, $userName, $password,$dbName); 16 17if ($mysqli->connect_error){ 18 echo $mysqli->connect_error; 19 exit(); 20}else{ 21 $mysqli->set_charset("utf-8"); 22} 23 24$sql = "SELECT * FROM users"; 25 26$result = $mysqli -> query($sql); 27 28//クエリー失敗 29if(!$result) { 30 echo $mysqli->error; 31 exit(); 32} 33 34//レコード件数 35$row_count = $result->num_rows; 36 37//連想配列で取得 38while($row = $result->fetch_array(MYSQLI_ASSOC)){ 39 $rows[] = $row; 40} 41 42//結果セットを解放 43$result->free(); 44 45// データベース切断 46$mysqli->close(); 47 48?> 49 50 51 52<!--mail check--> 53 54 55<?php 56 if(isset($_POST['to'])) { 57 58 mb_language("Japanese"); 59 mb_internal_encoding("UTF-8"); 60 61 $to = $_POST['to']; 62 $title = $_POST['title']; 63 $content = $_POST['content']; 64 $headers = 'From: info@hogehoge.shop' . "\r\n"; 65 66 67 if(mb_send_mail($to, $title, $content, $headers)){ 68 69 echo "メールを送信しました"; 70 71 } else { 72 echo "メールの送信に失敗しました"; 73 } 74} else { 75 76} 77 78?> 79 80 81<!--mail check end--> 82 83 84 85<meta charset="utf-8"> 86</head> 87<body> 88<h1>メール送信フォーム</h1> 89<h3>使い方</h3> 90<p>1 下のフォームに必要な情報を入力 </p> 91<p>2 「メールを送信」ボタンを押す</p> 92登録ユーザー数:<?php echo $row_count; ?> 93<table border='1'> 94<tr> 95<th>ユーザーID</th> 96<th>ユーザー名</th> 97<th>メールアドレス(メール送信用)</th> 98</tr> 99 100<?php 101foreach($rows as $row){ 102?> 103<tr> 104 <td><?php echo $row['user_id']; ?></td> 105 <td><?php echo $row['username']; ?></td> 106 <td><?php echo $row['email']; ?> </td> 107 108</tr> 109<?php 110} 111?> 112</table border='1'> 113<hr> 114<!--mail --> 115<form action="" method="POST"> 116<input type="hidden" name="to" value=" 117 118<?php 119 120foreach($rows as $row){ 121 122 echo $row['email']; ?><?php echo ", " ; 123 124} 125?>"> 126<p>メールタイトル : <input type="title" name="to" ></input></p> 127<p>メール本文 : </p><textarea name="content" cols="50" rows="5"></textarea></p> 128<input type="submit" value="メールを送信"></input> 129</form> 130</center> 131</body> 132</html>

補足情報(FW/ツールのバージョンなど)

hogehogeの場所は実際のメールアドレス等に変えれば動いております。
php 7
xrea server
ご回答宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

while($row = $result->fetch_array(MYSQLI_ASSOC)){

のループの中で送信すれば良いのでは?

投稿2020/06/07 10:55

m.ts10806

総合スコア80875

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

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

退会済みユーザー

退会済みユーザー

2020/06/07 11:06

<?php if(isset($_POST['to'])) { while($row = $result->fetch_array(MYSQLI_ASSOC)){ mb_language("Japanese"); mb_internal_encoding("UTF-8"); $to = $_POST['to']; $title = $_POST['title']; $content = $_POST['content']; $headers = 'From: info@hogehoge.shop' . "\r\n"; if(mb_send_mail($to, $title, $content, $headers)){ echo "メールを送信しました"; } else { echo "メールの送信に失敗しました"; } } } else { } ?> で実行ですか?
guest

0

投稿2020/06/07 10:55

Orlofsky

総合スコア16417

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

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

退会済みユーザー

退会済みユーザー

2020/06/07 11:11

BBCに書く方法も考えてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問