简体   繁体   English

使用PHP发送电子邮件收件人

[英]sending email recipient using PHP

i am not good at php so need some help.I have a php page with check box from where i am trying to send mail to multiple recipient. 我不擅长PHP所以需要一些帮助。我有一个带有复选框的php页面,我试图向多个收件人发送邮件。 i can send mail but with little problem. 我可以发送邮件,但没有什么问题。 when i select eg. 当我选择例如。 3 check box to send email then 1st email recipient is ok but 2nd email goes with 1st and 2nd recipient and 3rd email goes 1st,2nd,3rd recipient. 3复选框发送电子邮件然后第一个电子邮件收件人是好的,但第二个电子邮件与第一和第二个收件人和第三个电子邮件第1,第2,第三个收件人 i guess having problem with 'foreach'. 我猜有'foreach'的问题。 will someone pls help me to send individual email to individual recipient with my MySQL query's. 有人请帮我用我的MySQL查询向个别收件人发送个人电子邮件。

Here is my code for mail.php page 这是我的mail.php页面的代码

<?php
require_once('auth.php');


<html>
<head>
<title>PHPMailer - SMTP basic test with authentication</title>
</head>
<body>


include("Connections/connection.php");
//error_reporting(E_ALL);
error_reporting(E_STRICT);

date_default_timezone_set('Europe/Dublin');

require_once('php_mailer/class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from withinclass.phpmailer.php   if not already loaded

$mail = new PHPMailer();


//$body = file_get_contents('contents.php');
//$body = eregi_replace("[\]",'',$body);

$sender_name        =   $_SESSION['sender_name'];
$sender_email       =   $_SESSION['sender_email'];
$sender_password    =   $_SESSION['sender_password'];


$id_user    =   $_POST["id_user"];

foreach ($id_tariff as $idt)
{
$query = sprintf("SELECT From_Date, To_Date, first, last, city, country, Email_1, Email_2, account_name FROM user_info where id_user = $id_user");
$result = mysql_query($query) or die(mysql_error());


$body = "
<table width='100%' border='1' cellspacing='0' cellpadding='3' bordercolor='#ffcccc'>
<tr>
<th bgcolor='#cc3333'>From</th>
<th bgcolor='#cc3333'>To</th>
<th bgcolor='#cc3333'>First Name</th>
<th bgcolor='#cc3333'>Last Name</th>
<th bgcolor='#cc3333'>City</th>

<th bgcolor='#cc3333'>country</th>

</tr>


";


while($row = mysql_fetch_array($result)){
$body .="<tr>";
$body .="<td>".$row['From_Date']."</td>";
$body .="<td bgcolor='#FFE8E8'>".$row['To_Date']."</td>";
$body .="<td>".$row['first']."</td>";
$body .="<td bgcolor='#FFE8E8'>".$row['last']."</td>";
$body .="<td>".$row['city']."</td>";
$body .="<td bgcolor='#FFE8E8'>".$row['country']."</td>";
$body .="</tr>";
$to1 = $row['Email_1'];
$to2 = $row['Email_2'];
$account_name = $row['account_name'];
}
$body .="</table>";


$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "smtp.gmail.com"; // SMTP server
$mail->SMTPDebug = 1; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl";
$mail->Host = "smtp.gmail.com"; // sets the SMTP server
$mail->Port = 465; // set the SMTP port for the GMAIL server
$mail->Username = "$sender_email"; // SMTP account username
$mail->Password = "$sender_password"; // SMTP account password


$mail->SetFrom($sender_email,$sender_name);

$mail->AddReplyTo("$sender_email","$sender_name");


$mail->Subject = "Hello Dear $account_name";


$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";

$mail->MsgHTML($body);



$mail->AddAddress($to1,$account_name);

$mail->AddAddress($to2,$account_name);




if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "YOUR E-MAIL HAS SENT";

}


}
?>

</body>
</html>

You have to call $mail->ClearAddresses() after each mail goes out. 每封邮件发出后你都要调用$mail->ClearAddresses() You're not resetting the PHPMailer object after each mail, and AddAddress() does exactly what it says - adds a new address to the 'To:' list. 您没有在每个邮件之后重置PHPMailer对象,并且AddAddress()完全按照它所说的那样 - 在“收件人:”列表中添加新地址。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM