我使用以下代码向多个收件人发送电子邮件,但它有问题。首先,我必须在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"/>
答案 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。