【问题标题】:Multiple sending of email with attachment - repost多次发送带附件的电子邮件 - 重新发布
【发布时间】:2013-05-08 10:49:44
【问题描述】:

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

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

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

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

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

希望您能帮助解决我的 2 个问题。

$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);

【问题讨论】:

  • 不要再发布同样的问题只是为了试图提高它,因为你不喜欢之前的答案
  • 如果我冒犯了你,我很抱歉。但是我需要喜欢能解决我问题的答案吗?我的意思是我来这里是为了寻求帮助,而不仅仅是为了喜欢答案。我删除了我之前的问题并发布了一个新问题,以便其他人可以阅读并帮助我。我希望你明白。还是谢谢你。
  • 你仍然不应该仅仅因为你没有得到答案而转发,人们经常浏览未回答的部分。
  • 如我所说,我已经删除了之前的帖子。
  • 你不能只是删除一个帖子然后重新发布完全相同的问题来增加它。这不是一个可以发帖的论坛。

标签: php mysql phpmailer


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    Check This

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

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

    是否达到内存限制,取决于您的电子邮件服务器,即使是 php 也可以发送 100MB 的附件..可能下面的链接会有所帮助

    Click here

    希望它有效!

    【讨论】:

      【解决方案3】:

          <?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>
      

      【讨论】:

      • 解释你的答案
      猜你喜欢
      • 2015-08-28
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      • 2019-03-09
      • 2015-09-09
      • 1970-01-01
      相关资源
      最近更新 更多