2015-10-29 53 views
1

我正在阅读来自文本文件的电子邮件,并且一次只能发送一封电子邮件。所有东西(发件人,主题,正文)都是恒定的,除了接收者。我有我的PHP邮件的工作,我使用额外的代码是:PHP邮件群发电子邮件一个接一个

<?php 
if ($_FILES) { 
    if ($_FILES['file']['name'] != "") { 
     if (isset($_FILES) && $_FILES['file']['type'] != 'text/plain') { 
      echo "<span>File could not be accepted ! Please upload any '*.txt' file. </span>"; 
      exit(); 
     } 

     echo "<center><span id='Content'>Contents of ".$_FILES['file']['name']." File</span></center>"; 
     $fileName = $_FILES['file']['tmp_name']; 
     $file = fopen($fileName,"r") or exit("Unable to open file!"); 
     $string = file_get_contents("$fileName"); // Load text file contents 
     $pattern = '/[a-z0-9_\-\+][email protected][a-z0-9\-]+\.([a-z]{2,3})(?:\.[a-z]{2})?/i'; 
     preg_match_all($pattern, $string, $matches); 
     $output = var_export($matches[0]); 

     foreach ($output as $item) { 
      echo "$item\n"; 
      $output = $item; 
     } 

     print_r($output); 
    } else { 
     if (isset($_FILES) && $_FILES['file']['type'] == '') { 
      echo "<span>Please Choose a file by click on 'Browse' or 'Choose File' button.</span>"; 
     } 
    } 
} 
?> 
+0

你的问题是什么? – madforstrength

+0

我有一个充满电子邮件的文本文件,我必须阅读电子邮件并将其发送到一个接一个。我从txt文件中读取的电子邮件是收件人地址。如果您有任何想法,请不要将邮件逐一发送至所有地址,请分享。谢谢 – KaramChand

+0

您可以使用循环或将所有电子邮件地址保存为逗号分隔的字符串并立即发送。你可以发布你的邮件程序脚本,所以我可以看看它,也许提供一个解决方案。 –

回答

0

您可以设置多个收件人到一个单一的消息和SingleTo设置为true。

$recipient_addresses = array(); 
.... 
$message = new \PHPMailer; 
$message->SingleTo = true; 
.... 
foreach($recipient_addresses as $email) $message->addAddress($email);  
.... 

请注意SingleTo仅在“mail”和“sendmail”传输中受支持,而不在“SMTP”中支持。

如果您使用SMTP传输,只需逐个循环发送每个地址。只需拨打一个时间MESSAGE-$> addAddress传递只有一个地址的PHPMailer类的每个实例,而是创建多个实例,一个接一个:

1. $message = new \PHPMailer; 
2. $message->addAddress($email); 
3. fill other data, but don't set the SingleTo property value, keep it default (false). 
4. $message->send(); 
5. unset($message); 

也请注意一个事实,即SingleTo是计划在PHPMailer 6.0的发行版中弃用,并在7.0中删除。

相关问题