У меня есть динамическая таблица, в которой введены имена пользователей. При отправке имена запрашиваются у LDAP, чтобы получить идентификаторы электронной почты, и им будет отправлено письмо. Мой код, как показано ниже:Ошибка при отправке писем при предоставлении адреса в виде массива
<?PHP
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
$email_body = $email_body ."Test";
require_once("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = "***";
$mail->SetFrom('***');
$mail->Subject = "Test";
$mail->MsgHTML($email_body);
foreach($_POST['Trainee_Name'] as $traineename) //Field Name in the dynamic table
{
$username="***";
$password="***";
$lc = ldap_connect("***") or
die("Couldn't connect to AD!");
ldap_set_option($lc, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_bind($lc,$username,$password);
$base = "OU=**,DC=**,DC=**";
$filt = "(&(&(&(objectCategory=person)(objectClass=user)(name=$traineename*))))";
$sr = @ldap_search($lc, $base, $filt);
$info = ldap_get_entries($lc, $sr);
for ($j = 0; $j < $info["count"]; $j++)
{
echo $address=$info[$j]["mail"][0]."<br/>" ; //echo's the email ID
$mail->AddAddress($address);
}
if ($j == 0)
{
echo "No matches found!";
}
ldap_close($lc);
}
if (!$mail->send()) {
echo "Mailer Error (" . str_replace("@", "@", $row["email"]) . ') ' . $mail->ErrorInfo . '<br />';
break; //Abandon sending
} else {
echo "Message sent";
}
}
?>
В выходных данных, код запроса LDAP вторит E-Mail ID, но не отправляет почту. Где я мог поступить неправильно? Я использовал ссылки ниже в качестве ссылки:
- PHP mailer multiple address
- PHPMailer AddAddress()
- how to send emails to multiple addresses using phpmailer
оценивает любое предложение/помощь.
Не полагайтесь на источники, не являющиеся авторитетными. Взгляните на [пример списка рассылки, предоставленный с PHPMailer] (https://github.com/PHPMailer/PHPMailer/blob/master/examples/mailing_list.phps). Это показывает получение списка из MySQL, но отправляющая часть будет такой же, как вы используете, но она очень эффективна для mroe. Как правило, читайте документы, проверяйте свои входные и возвращаемые значения, код чистым - этот комбинированный массив-добавление и эхо являются ужасными! – Synchro
по соображениям эффективности вы также должны рассмотреть возможность открытия, привязки и закрытия соединения ldap вне цикла foreach. – heiglandreas