使用PHP / Mysql中的内容发送电子邮件

时间:2010-08-30 12:45:32

标签: php email newsletter

我想发送数据来自php / mySQL查询的电子邮件。

我知道html会在电子邮件中呈现,但我认为php代码不会。

那么有什么方法可以发送包含从mySQL数据库查询的内容的电子邮件?

我已在这里搜索,有一个主题涵盖了它,但是建议的人建议使用pdf导出或使用第三方工具,在我的情况下不适用。

谢谢你们的帮助:)

2 个答案:

答案 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放入页面。