发送电子邮件到PHP中从数据库检索到的多个电子邮件地址

时间:2017-04-08 23:41:36

标签: php email variables phpmailer

所以我遇到过这个问题,我一直试图解决这个问题。 我有一个从数据库中检索到的客户电子邮件列表,一旦我点击处理,它就会发送一封电子邮件给客户的电子邮件&#34; ..下面的屏幕截图描述了我的意思.. < / p>

所以一旦按下&#34;流程&#34;在第一行的按钮上,它应该向第一行中检索到的电子邮件发送一封电子邮件 image

    // The code below retrieves all the customer info from the database including customers email addresses. 
    <?php
while ($row = $result->fetch_assoc()){
    print "<tr>";
    print  "<td>" . $row['TransactionID'] . "</td>";
    print  "<td>" .$row['ItemName']."<br>" ."</td>";
    print  "<td>" .$row['ItemQTY']."<br>" ."</td>";
    print  "<td>" . $row['ItemAmount'] . "</td>";
    print  "<td>" . $row['BuyerEmail'] . "</td>";
    print "<td ><a href='#sendemail'>Process</a></td>"; //Once this link is clicked, it should take me to the next code send an email the retrieved email. 


    print  "</tr>";
}
$mysqli->close();


?>

// // ---------------------

// The code below should trigger once i click "Process" and send an email to the customer. 
if (isset($_GET['sendemail'])){

require 'PHPMailer/PHPMailerAutoload.php';

$mail = new PHPMailer;

$mail->isSMTP();                                   
$mail->Host = 'smtp.gmail.com';                        
SMTP servers
$mail->SMTPAuth = true;                                       
authentication
$mail->Username = '****@gmail.com';          
$mail->Password = '********'; 
$mail->SMTPSecure = 'tls';                         
`ssl` also accepted
$mail->Port = 587;                                 

$mail->setFrom('****@gmail.com', 'RANDOMNAME');
$mail->addReplyTo('****@gmail.com', 'RANDOMNAME');
$mail->addAddress('BuyerEmail');  


$mail->isHTML(true); 

$bodyContent = '<h1>Our Valued Customer,</h1>';
$bodyContent .= '<p>Your Order is ready for pick up!</p>';

$mail->Subject = 'RANDOMNAME';
$mail->Body    = $bodyContent;

if(!$mail->send()) {
  echo 'Message could not be sent.';
  echo 'Mailer Error: ' . $mail->ErrorInfo;
}
runsendemail();



}
   ?>

当$ mail-&gt; addAddress(&#39; email @ example&#39;)时,代码工作得很好;有一个预定义的值..但不知道如何使它变量&#39;变量&#39;意味着它会根据从数据库中检索到的电子邮件列表不断变化..

2 个答案:

答案 0 :(得分:0)

您的流程链接应链接到包含您邮件逻辑的页面,并传递电子邮件以使用<a href="/sendmail.php?sendemail=<?php echo urlencode($row['BuyerEmail']); ?>">Process</a>

然后,您的sendmail.php文件会收到$_GET['sendemail']的电子邮件,并继续发送邮件逻辑$mail->addAddress(urldecode($_GET['sendemail']));

注意:希望您有某种身份验证,这不是一个可公开访问的页面,否则任何人都可以触发此文件并将您的数据库信息发送到他们选择的电子邮件,或者多次点击此文件并且使你的系统崩溃。

答案 1 :(得分:0)

将此更改为以下内容:

  print "<td ><a href='#sendemail'>Process</a></td>"; //Once this link is clicked, it should take me to the next code send an email the retrieved email. 

这是你应该改为:

echo "
<td>
<form method='get' action='CHANGE IT TO YOUR PHP SCRIPT NAME'?
<input type='hidden' name='sendemail' value='$row['BuyerEmail']'>
<input type='submit' value='Process'>
</form>
</td>
";

这里我使用了一个简单的html表单。我使用get方法传递了一个隐藏的值,即您的买家电子邮件。如果操作是不同的文件,请将操作更改为您的php脚本名称。现在您可以在电子邮件中使用$ _GET ['sendemail']作为买家的电子邮件地址发送代码。