PHPMailer - 向多个人发送带有附件的电子邮件以及从MySql下载的电子邮件地址

时间:2017-08-17 12:36:42

标签: php database pdo phpmailer

首先,抱歉我的英文:) 我有一些phpmailer的问题。我想向多个人发送电子邮件,并附上专门的附件(pdf)。电子邮件地址必须从MySQL下载。 但我不知道我该怎么做。 PDF文件与datebase表中的列'name'具有相同的名称。 例如,我有:

  • 用户名:XXX
  • PDF名称(来自ftp):XXX.pdf
  • 电子邮件:somemail@example.com

这是一个例子,我有很多用户有很多pdfs。

简化我想要的内容:用户XXX必须收到XXX.pdf的电子邮件,但用户YYY必须收到YYY.pdf的电子邮件。

我不知道你是否理解我的意思:)

此刻我有类似的东西,我不知道如何在查询中为电子邮件分配名称(动态?)

$stmt = $dbh->prepare('SELECT id, name, email FROM users WHERE name ="SomeUserName" '); 
// how to assign name to email??
$stmt->execute();


$mail             = new PHPMailer(); // defaults to using php "mail()"

$mail->CharSet = 'UTF-8';

$body             = 'SOME TEXT IN BODY';



$mail->AddReplyTo("name@yourdomain.com","First Last");

$mail->SetFrom('name@yourdomain.com', 'name@yourdomain.com');



while($row=$stmt->fetch(PDO::FETCH_ASSOC))
    {
     $mail->addAttachment("pdf/07.2017/".str_replace('.','_',$row['name']).".pdf"); 
                        $address = $row["email"];
                    }


$mail->AddAddress($address, "SOME TEXT");

$mail->Subject    = "SOME SUBJECT";

$mail->MsgHTML($body);

if(!$mail->Send()) {
    echo 'send';
} else {
  echo 'didnt send';
}

1 个答案:

答案 0 :(得分:1)

您需要在while循环之前设置所有常规信息。

然后在你的while循环中你需要:

  1. 添加附件
  2. 设置接收器的地址
  3. 发送电子邮件
  4. Clear the attachment
  5. Clear the address for the receiver
  6. 用于将变量分配给MySQL查询

    $stmt = $dbh->prepare('SELECT id, name, email FROM users WHERE name =:name');
    $stmt->bindParam(":name", "somename");
    

    显然"somename"也可以是$_POST['somename']等变量。