我正在使用PHPMailer將表單中的電子郵件發送到MySQL數據庫中的所有電子郵件。在PHPMailer中使用數據庫中的電子郵件和名稱陣列
我已經設法讓表單發送電子郵件到每封電子郵件,但我現在試圖在發送給他們的電子郵件中使用他們的名字,這意味着每封電子郵件將以「你好,[他們的名字]開頭, 」。
我使用一個數組來遍歷我的數據庫查詢的結果,並添加每個電子郵件地址和名稱$mail->addAddress('[email protected], 'name');
我試過保存變量$name = $row['name'};
while循環中,但它從輸入姓氏將數據庫放入所有電子郵件中。
我的問題是:是否可以訪問該函數的'name'
部分並使用它的每封電子郵件。還是從數據庫本身取名?如果是的話,我會怎麼做呢?
此外,當電子郵件發送給每個收件人時,它會顯示「收件人:」字段中的所有收件人。這對隱私來說很不好。有沒有辦法來防止這種情況?
我對PHP和MySQL相當陌生,所以仍然非常感謝。
請在下面找到我的代碼。
<?php
// Take message value from form
$message = preg_replace("/\r\n|\r/", "<br />", $_REQUEST['message']);
$message = trim($message);
// Error reporting on
error_reporting(E_STRICT | E_ALL);
date_default_timezone_set('Etc/UTC');
// Require PHPMailer
require 'PHPMailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.example.com';
$mail->SMTPAuth = true;
$mail->SMTPKeepAlive = true; // SMTP connection will not close after each email sent, reduces SMTP overhead
$mail->Port = 587;
$mail->Username = '[email protected]';
$mail->Password = 'mypassword';
$mail->setFrom('[email protected]', 'Me');
$mail->addReplyTo('[email protected]', 'Me');
$mail->Subject = "Newsletter";
/* ----- Add address function below ----- */
// Require Database connection
require 'dbcon.php';
// SELECT email and name values from database
$query = "SELECT email, name FROM customers";
// Result = the database query
$result = $con->query($query);
// Get array of users email addresses and names.
while($row = $result->fetch_array())
{
// Add recipients from values found in database
$mail->addAddress($row["email"], $row["name"]);
}
/* ----- Add address function above ----- */
$mail->Body ="Hello, <br> <br> $message";
$mail->AltBody = $message;
if(!$mail->Send())
{
echo "Message could not be sent.";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
print 'Sent!';
?>
目前您是通過所有的客戶循環並將每個地址添加到具有相同內容的一封電子郵件中,然後發送(不要這樣做 - 隱私問題)。而聽起來好像你想發送個人化的電子郵件給每個客戶。 – Progrock
表單中的'$ message'對每個收件人都是一樣的。但是,是的,我想個性化每封電子郵件的第一行。 –
你說得對@Progrock。除了Dave的回答,你真的幫助我了! –