[英]Send email via PHPMailer to single email address on MySQL
“搜索结果”将显示一个表格,并且在每一行的末尾都有一个“电子邮件按钮”。 访客单击一个“电子邮件按钮”,系统将电子邮件发送给该注册的“用户”。
PHPMailer和邮件系统运行良好,但仅适用于静态电子邮件!
问题:我需要更改代码以将电子邮件发送给访客选择的单个电子邮件。 我在$query
添加了“ WHERE”条件,但它似乎没有影响。
以下两行的通信功能正在起作用
$mail->AddAddress("support@domain.co.uk", "John Doe");
$mail->AddAddress("admin@domain.co.uk");
与以下行不工作
$mail->AddAddress("$email", "John Doe");
错误消息说:
“无效的地址:无法发送消息。”
“邮件错误:您必须提供至少一个收件人电子邮件地址。”
<?php
//mailer.php
$dbhost = 'xxx.xxx.xxx.xxx';
$dbuser = 'user_name';
$dbpass = 'password';
$dbtable = 'tablename';
$db = 'db_name';
$conn = mysqli_connect($dbhost,$dbuser,$dbpass,$db) or
die("Could not connect: " . mysql_error());
mysqli_select_db($conn,$db);
if(isset($_POST['requestedEmail'])){
$requestedEmail = $_POST['requestedEmail'];
}
//Connecting to database
$link = mysqli_connect($dbhost, $dbuser, $dbpass, $db) OR DIE ("Unable to connect to database! Please try again later.");
mysqli_select_db($conn,$db);
//Fetching from database table.
$query = "SELECT email FROM db_name WHERE email='". $requestedEmail . "'";
if ($result)
{
while ($row = mysqli_fetch_array($result)) {
send_mail($row['email']);
}
}
//$email = $row['email'];
?>
<?php
require 'PHPMailer_5.2.0/class.phpmailer.php';
$email = $row['email'];
$mail = new PHPMailer();
$mail->IsSMTP(); // set mailer to use SMTP
$mail->Host = "domainname.co.uk;domainname.co.uk"; // specify main and back`enter code here`up server
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "support@domain.co.uk"; // SMTP username
$mail->Password = "password"; // SMTP password
$mail->From = "support@domain.co.uk";
$mail->FromName ="Company Name";
$mail->AddAddress($email, "John Doe");
$mail->AddReplyTo("info@domain.co.uk", "Information");
$mail->WordWrap = 50; // set word wrap to 50 characters
$mail->IsHTML(true); // set email format to HTML
$mail->Subject = "Here is the subject 3.4";
$mail->Body = "This is the HTML message body <b>in bold!</b>";
$mail->AltBody = "This is the body in plain text for non-HTML mail clients";
if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Message has been sent to: " . $email; // $email is not printed out
?>
这似乎是错误的
$query = "SELECT email FROM db_name WHERE email=$row[email]";
它从哪里获得$ row [email]? 您需要在其中有一个有效的变量-例如在post数组中(假设您正在从表单传递变量。类似:
if(isset($_POST['requestedEmail'])){
$requestedEmail = $_POST['requestedEmail']}
// other code
$query = "SELECT email FROM db_name WHERE email='". $requestedEmail . "';
然后,您从返回的$ row中获取电子邮件(假设您正在使用返回查询中的该变量)
$email = $Row['email'];
然后,您可以使用$ email(不带引号,因为它是变量而不是字符串):
$mail->AddAddress($email, "John Doe");
这行:
$mail->AddAddress("$email", "John Doe");
应更改为:
$mail->AddAddress($email, "John Doe");
在PHP中将变量作为参数传递时,不要像在传递字符串时那样在变量周围使用引号。 因此,在您的代码中,您没有传递变量$ email,而是传递了字符串“ $ email”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.