我想发送数据来自php / mySQL查询的电子邮件。
我知道html会在电子邮件中呈现,但我认为php代码不会。
那么有什么方法可以发送包含从mySQL数据库查询的内容的电子邮件?
我已在这里搜索,有一个主题涵盖了它,但是建议的人建议使用pdf导出或使用第三方工具,在我的情况下不适用。
谢谢你们的帮助:)
答案 0 :(得分:2)
使用PHPMailer在服务器上生成电子邮件。它使得生成多部分消息(明文+ html,附件和嵌入/内联图像)非常容易。基本上是:
// set up PHPMailer
$mail = new PHPMailer();
$mail->SetFrom('you@yourserver.com');
$mail->AddReplyTo('you@somewhereelse.com');
$mail->Subject('Your profile');
$mail->IsHTML(TRUE);
// do your database query
$con = connect_to_database();
$stmt = run_database_query($con, "SELECT ... FROM ...");
$data = fetch_from_database($stmt);
// set the email address
$mail->AddAddress($data['email'], $data['fullname']);
// html content for smart email clients
$html = <<<EOL
<h1>Welcome</h1>
<p>Your username is {$data['username']}.</p>
EOL;
// plain text alternate content
$text = <<<EOL
Welcome
Your username is {$data['username']}.
EOL;
// add the content to the mail
$mail->MsgHTML($html);
// add alternate content
$mail->AltBody($text);
// send the mail
if ($mail->Send()) {
// mail sent correctly
} else {
die("Uhoh, could not send to {$mail['email']}:" . $mail->ErrorInfo);
}
答案 1 :(得分:0)
为了避免垃圾邮件问题,您可以将PHPMailer
包装在一个类中,并在从数据库表中读取的每个电子邮件地址中实例化。
对于每个电子邮件地址,您可以创建一个新实例并执行某种->setMailAddr($mail,$fullName)
,并在发送电子邮件后销毁此实例。
理想的做法是在每个POST上放置一个新实例。在这种情况下,您可以将FORM放入页面。