2016-12-21 11 views
-1

MySQLデータベースからアドレスのサブセットに電子メールを送信する際に問題があります。PHPとMySQLを使用して複数の電子メールを送信

3つの電子メール(email1、email2、email3)を送信する必要がありますが、最初の(email1)を送信するだけです。

<?php 
    $query_iscritti = "SELECT * FROM richieste WHERE negozio LIKE 'NOMENEGOZIO'"; 
    $iscritti = mysql_query($query_iscritti, $conn) or die(mysql_error()); 
    $row_iscritti = mysql_fetch_assoc($iscritti); 
    $totalRows_iscritti = mysql_num_rows($iscritti); 
    $mittente = $_POST['mittente']; 
    $destinatario = $row_iscritti['email']; 
    $oggetto = $_POST['oggetto']; 
    $messaggio = nl2br($_POST['messaggio']); 
    $allegato = $_FILES['allegato']['tmp_name']; 
    $allegato_type = $_FILES['allegato']['type']; 
    $allegato_name = $_FILES['allegato']['name']; 
    $headers = "From: " . $mittente; 
    $msg = ""; 
    if (is_uploaded_file($allegato)) { 
     $file = fopen($allegato,'rb'); 
     $data = fread($file, filesize($allegato)); 
     fclose($file); 
     $data = chunk_split(base64_encode($data)); 
     $semi_rand = md5(time()); 
     $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 
     $headers .= "\nMIME-Version: 1.0\n"; 
     $headers .= "Content-Type: multipart/mixed;\n"; 
     $headers .= " boundary=\"{$mime_boundary}\""; 
     $msg .= "This is a multi-part message in MIME format.\n\n"; 
     $msg .= "--{$mime_boundary}\n"; 
     $msg .= "Content-Type: text/html; charset=\"UTF-8\"\n"; 
     $msg .= "Content-Transfer-Encoding: 7bit\n\n"; 
     $msg .= $messaggio . "\n\n"; 
     $msg .= "--{$mime_boundary}\n"; 
     $msg .= "Content-Disposition: attachment; filename=\"{$allegato_name}\"\n"; 
     $msg .= "Content-Transfer-Encoding: base64\n\n"; 
     $msg .= $data . "\n\n"; 
     $msg .= "--{$mime_boundary}--\n"; 
    } else { 
     $msg = $messaggio; 
    } 
    if (mail($destinatario, $oggetto, $msg, $headers)) { 
    } else { 
     print "Errore"; 
    } 
    while ($row_iscritti = mysql_fetch_assoc($iscritti)); 
    echo ("EMAIL INVIATE CORRETTAMENTE"); 
?> 

私はこの問題はwhileループしていると思います。

+1

while ($row_iscritti = mysql_fetch_assoc($iscritti)); 

を交換し、コードのインデントが唯一の光喜びを提供していませんのでご注意ください。コードを共有する場合は、他の人がコードを理解できるようにすることが重要です。 – arkascha

+1

最初に行を1つだけ取得し、最後のループは完全に空です。 – jeroen

+3

一般的な注意:古い、安全でない、廃止予定の 'mysql _...()'関数を使用しています。この問題はPHPのドキュメントではっきりと指摘されています。コードを移植し、 'mysqli'や' PDO' _now_を使い始めるべきです。そうでなければphpをアップグレードするとコードが機能しなくなります。 – arkascha

答えて

-1

var_dump $ row_iscrittiあなたがデータベースから得たものをチェックしてください。電子メールの配列を持っている場合は、メール機能をループする必要があります。 あなたが6行($のdestinario)で電子メールの行を取得し、あなたがここに電子メールを送信する:あなたはまだ問題

foreach ($destinatario as $email) 
{ 
    mail($email....) 
} 

編集している場合、ここでコメントは結果をダンプ

if (mail($destinatario, $oggetto, $msg, $headers)) 

を、あなたはループが開始しました:

while ($row_iscritti = mysql_fetch_assoc($iscritti)); 

あなたが持っているものをチェック、右のそれを作る:

while ($row_iscritti = mysql_fetch_assoc($iscritti)) 
{ 
    var_dump($row_inscritti); 
} 
-1
while ($row_iscritti = mysql_fetch_assoc($iscritti)) 
{ 
var_dump($row_inscritti); 
} 

ダンプは私が解決MySQLデータベース

0

のすべての値で正しい配列を与えます! 私は

while ($row_iscritti = mysql_fetch_assoc($iscritti)) 
mail($row_iscritti['email'], $oggetto, $msg, $headers); 
関連する問題