前提・実現したいこと
メールを一斉送信する機能は付いたのですが、問題点があります。
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
ご回答宜しくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/06/07 11:06