2010-10-04 51 views
0

我有这样的功能:PHP函数发送某些邮件,不是别人

function sendEmail ($to, $id, $from='n', $link='n') { 

    //retrieve message from system 
    $where = "id = '".$id."'"; 
    $resource = dbSelect (TMAIL, $where); 

    if ($resource[0] !== 1) { 
     return "Error sending email"; 
    } 

    $subject = $resource[1]['subject']; 
    $body = $resource[1]['body']; 

    //create and send email 
    if ($link !== "n") { 
     $body = $body.' <a href="'.$link.'">'.$link.'</a>'; 
    } 
    if ($from == 'n') { 
     $from = ADMIN; 
    } 

    mail ($to, $subject, $body, $from); 

    //deubug 
//print_r($resource); 
    //echo $from; 
    //echo $to; 
    //echo $subject; 
    //echo $body; 
    //echo $link; 
} 

被称为像这样:

//send instructions 
     $f_error['failure'] = sendEmail ($email, "1", ADMIN, $link); 
     $f_error['failure'] = sendEmail (ADMIN, "2"); 

在上述情况下,以sendEmail第一次调用似乎没有做任何东西和第二次被发送两次。我已经检查了发送给函数和代码本身的变量/常量,并且没有发现可以解释这种行为。

任何人都可以提出什么可以防止这个工作?

+0

为什么您的邮件功能需要一个ID? – Jordy 2010-10-04 12:54:41

+0

什么是ADMIN?是定义变量? – 2010-10-04 12:56:07

+0

@Jordy id从CMS邮件管理器中获取邮件。 @Haim ADMIN是一个设置管理员电子邮件地址的常量。 – YsoL8 2010-10-04 13:00:43

回答

0

几件事情:

  • 如果ID是一个数字,不要把它放在引号

  • “ADMIN”不是一个有效的电子邮件地址(除非您是在本地提供)

  • 看看http://uk3.php.net/manual/en/function.mail.php - 您设置'from'标题的方式看起来不正确。

+0

引号不重要。每个我能想到的数据库都允许引用数字,而一些奇怪的数据库甚至可能会*要求它。 – cHao 2010-10-04 13:19:32

+0

ADMIN是一个常量。这可能是一个有效的电子邮件地址,如果这就是它的设置。 – cHao 2010-10-04 13:21:00

0

发现问题 - 第一封邮件进入我的垃圾邮件,第二封邮件没有进入我的垃圾邮件。我假设两者都会在同一个文件夹中结束。