-1

我重新发布这个是因为没有人回答我之前的帖子。

我正在尝试将电子邮件发送给多个收件人,并附有相应的 pdf 文件。我成功地向多个收件人发送了电子邮件,但收件人收到了多封电子邮件。收件人收到的电子邮件数量是存储在我的数据库中的电子邮件地址数量。

我遇到的第二个问题是发送给收件人的附件都是同一个文件。场景应该是这样的:收件人 A 应该附有 pdf A 的电子邮件,收件人 B 附有 pdf B,依此类推。

这些 pdf 的文件名与每个收件人拥有的唯一控制号相对应。例如,收件人 A 的控制号为 1234,因此他的 pdf 被命名为 1234.pdf。

我试图在 $ctrl_no = mysql_result($ctrl, 0) 中执行一个巧妙的循环,但它给出了一个错误,表明服务器的内存限制已达到。

希望你能帮助解决我的两个问题。

$input = addslashes($_POST['dep']);                                                                                                     

$email = "select email_address  from student y where y.center = '$input'"; 


if ($p_address=mysql_query($email))
{ 

 while($row = mysql_fetch_array($p_address))
 {     

 $mail->AddAddress($row[0]);

 $input = addslashes($_POST['dep']);                        


 $control = "select control_no  from student y where y.center = '$input'";

 if($ctrl=mysql_query($control)){

 $ctrl_no = mysql_result($ctrl, 0);


 $mail->AddAttachment("reports/".$ctrl_no.".pdf");  


 }
  else{

   echo "No attached pdf.";

  }

更新: $mail 功能

require_once('phpmailer/class.phpmailer.php');
include("phpmailer/class.smtp.php"); 

$mail             = new PHPMailer();

$body             = file_get_contents('phpmailer/body.html');
$body             = preg_replace('/\/b]/','',$body);

$mail->IsSMTP(); 
$mail->Host       = "smtp.gmail.com"; 
$mail->SMTPDebug  = 1;                   

$mail->SMTPAuth   = true;                  
$mail->SMTPSecure = "tls";                 
$mail->Host       = "smtp.gmail.com";      
$mail->Port       = 587;                   
$mail->Username   = "me@gmail.com";  
$mail->Password   = mypass;           

$mail->SetFrom("me@gmail.com", "Office");

$mail->AddReplyTo("me@gmail.com"," Office");

$mail->Subject    = "My Subject";

$mail->AltBody    = "Subject file";

$mail->MsgHTML($body);
4

3 回答 3

0

您不能在一封电子邮件中向不同的收件人发送不同的附件。您将需要发送单独的电子邮件。

于 2013-05-08T11:07:29.493 回答
0

我认为您的问题可以解决,只需使用下面的教程链接调用函数检查

检查这个

为此使用while循环,用于检索pdf文件名和发件人的电子邮件并调用该函数

if (sendEmail("From Name", "from.email@yours.probably", "emailwhere@itgoes.to", "Email Subject", $msg,$_FILES['Attachment Name'])) {
echo "Email sent"; }

对于达到内存限制,这取决于您的电子邮件服务器,甚至 php 也可以发送 100MB 的附件。可能下面的链接会有所帮助

点击这里

希望它有效!

于 2013-05-08T11:07:31.063 回答
0

    <?php 
    $i = 0;
      while($view = mysqli_fetch_array($result)){ 
        $i++; ?>
        <tr>
          <td>
            <label><?php echo $i . ". " . $view['name']; ?>&nbsp</label>
          </td>
          <td>
            <input type="text" name="receiverEmail<?php echo $i; ?>" id="receiverEmail<?php echo $i; ?>" value="<?php echo $view['email'] ?>" readonly style="width: 300px">
          </td>
          <td>
            <input type="file" name="receiverFile<?php echo $i; ?>" id="receiverFile<?php echo $i; ?>">
          </td>
        </tr>
        <tr style="height: 5px"></tr>


  <?php }?>
        <tr style="height: 15px"></tr>
        <tr>
          <td></td>
          <td></td>
          <td style="float: right">
            <input type="submit" name="submit" id="submit">
          </td>
        </tr>
</form>
于 2018-10-01T09:29:30.627 回答