我试图向多个地址发送电子邮件,因此我编写了从数据库中提取电子邮件的函数,并用逗号分隔每个电子邮件,但邮件部分仍然失败。然而,与getmails()类似的功能正在另一个页面上工作,所以我真的迷失了我的错误。这是我的代码,任何帮助将不胜感激。
谢谢大家。
function getmails()
{
$id = mysql_query("SELECT * FROM subscribes ORDER BY subscribe_id DESC") or die(mysql_error());
$elements = array();
while( $activeArray=mysql_fetch_array($id) )
{
$elements[] = $activeArray['subscribe_email'] ;
}
$main = implode(', ', $elements);
print $main;
}
function announce() {
if( isset( $_POST['announce'])) {
$ToEmail = getmails();
$EmailSubject = "".$_POST['title']."";
$mailheader .= "From: newsletter@subdomain.domain.com\r\n";
$mailheader = "Reply-to:".$_POST['author']."@subdomain.domain.com\r\n";
$mailheader = "Content-type: text/html; charset=iso-8859-1\r\n";
$MESSAGE_BODY = "Author: ".$_POST['author']."<br>";
$MESSAGE_BODY = "Newsletter: ".$_POST['content']."<br>";
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure");
}
}
答案 0 :(得分:4)
除了RichieHindle的观察之外,你的邮件无法正常工作的原因是因为你在函数中打印结果而不是返回它们。你应该改变这个:
$main = implode(', ', $elements);
print $main;
对此:
return implode(', ', $elements);
答案 1 :(得分:2)
我不知道这是否是你的问题,但是构建$mailheader
的两行正在丢弃之前的值,因为你使用的是$mailheader = ...
而不是$mailheader .= ...
}