如何使用textarea框向多个收件人发送电子邮件?

时间:2017-08-14 21:19:22

标签: php email

我使用以下代码向多个收件人发送电子邮件,但它有问题。首先,我必须在PHP代码上设置所有电子邮件($ to =" email,email,email more")。然后我可以给他们发电子邮件。

我想要一个文本区域框()来粘贴我的所有电子邮件/电子邮件列表并发送它们。 我不想在php代码上逐个添加电子邮件。

这是我的代码:

<?php
     $to = $_POST['email_list']; //i'm trying this but not working.
     //$to = "xyz@somedomain.com".","."xyz1@somedomain.com".","."xyz2@somedomain.com";
     $subject = $_POST['subject'];
     $message = $_POST['message']; 
     $header = "From:abc@somedomain.com \r\n";
     $retval = mail ($to,$subject,$message,$header);
     if( $retval == true ) {
        echo "Message sent successfully...";
     }else {
        echo "Message could not be sent...";
     }
  ?>
  <textarea type="text" name="email_list"></textarea><br/>
  <input type="text" name="subject"/><br/>
  <textarea type="text" name="message"></textarea><br/>
  <input type="submit" name="submit" value="Submit"/>

1 个答案:

答案 0 :(得分:1)

如果要构建电子邮件收件人列表,可以使用explode()将电子邮件列表放入数组中,然后使用implode()将它们放入带有逗号的单个字符串中分隔符。

例如,如果您的textarea的电子邮件地址与新行字符分开(每行一封电子邮件),则可以使用PHP的PHP_EOL作为分隔符。

// Get the submited email addresses into an array
$email_list = explode(PHP_EOL, $_POST['email_list']);
// Implode that array into a comma-delimited string
$to = implode(",", $email_list);

如果您需要验证电子邮件地址等,如果需要,可以先通过$email_list循环或foreach运行array_walk

修改:请参阅以下答案:Explode PHP string by new line 而不是依赖于PHP_EOL,最好使用正则表达式来查找\ r和\ n。原因是EOL依赖于系统(服务器),而实际的换行符来自最终用户的浏览器,该浏览器使用他们的操作系统的EOL。