Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
phpmailer从文本文件获取收件人_Php_File_Phpmailer - Fatal编程技术网

phpmailer从文本文件获取收件人

phpmailer从文本文件获取收件人,php,file,phpmailer,Php,File,Phpmailer,在我发布这个帖子之前,我搜索了我的问题,但我只看到了如何从数据库或其他只有邮件功能的is中获取收件人 我想从txt文件发送电子邮件,但我的代码只从文本文档发送第一封电子邮件 <?php include("msd/mail.php"); $file = fopen("emails.txt", "r"); $line = fgets($file); $to = $line; $subject = "Approve your signup";

在我发布这个帖子之前,我搜索了我的问题,但我只看到了如何从数据库或其他只有邮件功能的is中获取收件人

我想从txt文件发送电子邮件,但我的代码只从文本文档发送第一封电子邮件

  <?php
  include("msd/mail.php");
  $file = fopen("emails.txt",  "r");
       $line = fgets($file);
        $to = $line;
  $subject = "Approve your signup";
  $body = "Hello, to approve your registration please click this link";
  $mail = new Mail();
  $mail->CharSet = 'UTF-8';
  $mail->FromName = "myweb.com";
  $mail->addAddress($to);
  $mail->subject($subject);
  $mail->body($body);
  if(!$mail->send())
 {
            echo "Error Sending Email!"; 
         }
         else
        { 
            echo "Mail sent!"; 
        }

    ?>

您需要逐行读取文本文件,然后将其放入数组并运行循环以添加地址

<?php
    include("msd/mail.php");
    $file = fopen("test.txt","r");
    $emailArray = array();
    while(! feof($file))
    {
        $emailArray[] = fgets($file). "<br />";
    }
    $subject = "Approve your signup";
    $body = "Hello, to approve your registration please click this link";
    $mail = new Mail();
    $mail->CharSet = 'UTF-8';
    $mail->FromName = "myweb.com";
    foreach($emailArray as $val)
    {
        $mail->addAddress($val);
    }
    $mail->subject($subject);
    $mail->body($body);
    if(!$mail->send())
    {
        echo "Error Sending Email!"; 
    }
    else
    { 
        echo "Mail sent!"; 
    }

?>

你可以通过循环来完成。请尝试以下代码:

<?php
  include("msd/mail.php");
  $file = fopen("emails.txt",  "r");
  if($file){
    $array = explode("\n", fread($fp, filesize($file)));
  }
  $subject = "Approve your signup";
  $body = "Hello, to approve your registration please click this link";
  $mail = new Mail();
  $mail->CharSet = 'UTF-8';
  $mail->FromName = "myweb.com";
  for($i=0;$i<=count($array)-1;$i++){
        $mail->AddAddress($array[$i]);
  } 
  $mail->subject($subject);
  $mail->body($body);
  if(!$mail->send())
    {
        echo "Error Sending Email!"; 
    }
    else
    { 
        echo "Mail sent!"; 
    }

注意:请确保文件由php读取

是每行一封电子邮件吗?如果是这样,您将需要一个循环。但我只知道如何从数据库或其他只有邮件功能的is获取收件人。-它比将电子邮件地址存储在文本文件中更安全,也更易于管理。我希望您已经采取了正确的步骤来保护该文件。如何使用loop来保护该文件?请检查服务器是否发送了正常的电子邮件。如果代码在localhost中进行测试,您需要进行SMTP配置,以便发送电子邮件。我发布的第一个代码正在工作,我收到了电子邮件,但您的代码显示我发送电子邮件时出错!请打印阵列以检查读取文件后获得的电子邮件。那么您使用的是phpmailer,请检查:您需要为每个收件人调用AddAddress方法一次。像这样:$mail->AddAddress'person1@domain.com","一人",$邮件->地址'person2@domain.com","二人",;这只写在代码中。请调试一下。此外,根据your emails.txt,电子邮件为test@gmail.com test2@gmail.com test3@gmail.com请使用有效的电子邮件进行测试..警告:filesize要求参数1为有效路径,第5行的/var/www/html/bb.php中给出的资源警告:第5行的/var/www/html/bb.php中的fread:Length参数必须大于0发送电子邮件时出错!邮件程序错误:您必须至少提供一个收件人电子邮件地址。请打印\r$array。我的猜测可能是,您的文件未被读取,因此未生成$array,因此您收到此邮件,您必须至少提供一封收件人电子邮件address@SIngo按照以下步骤通过设置调试级别调试php mailer,我希望您已经包含了这些文件,并检查了php错误日志必须提供至少一个收件人电子邮件地址。这是给我你的文本文件应该有一个电子邮件id每行如下,nitish@asd.com abc@asd.com xyz@xyz.inin我的文本文件只有一封电子邮件,仍然是“给我发相同的邮件”
<?php
  include("msd/mail.php");
  $file = fopen("emails.txt",  "r");
  if($file){
    $array = explode("\n", fread($fp, filesize($file)));
  }
  $subject = "Approve your signup";
  $body = "Hello, to approve your registration please click this link";
  $mail = new Mail();
  $mail->CharSet = 'UTF-8';
  $mail->FromName = "myweb.com";
  for($i=0;$i<=count($array)-1;$i++){
        $mail->AddAddress($array[$i]);
  } 
  $mail->subject($subject);
  $mail->body($body);
  if(!$mail->send())
    {
        echo "Error Sending Email!"; 
    }
    else
    { 
        echo "Mail sent!"; 
    }