PHP函数调用被忽略了?

时间:2014-11-07 04:07:49

标签: php forms email

我目前在PHP代码中遇到了一个非常令人沮丧的问题。没有报告错误,一切似乎都正常工作,除非一旦进行了函数调用,它似乎无法正常工作。我正在使用mail()函数发送一封电子邮件,我将其抓取并保存为.eml文件Test Mail Server Tool。以下是导致函数调用的代码:

    if(!empty($email)) {
        if(filter_var(trim($email), FILTER_VALIDATE_EMAIL)) {
            composeEmail($email, $name, $IDnumber, $othername);
        }
    } 

我做了一些标准的调试技术并在if statement中输出变量的值,以确保实际上有一个值作为参数传递,并且它正确地返回了值。真正的问题是当我到达composeEmail()函数时。

function composeEmail($email, $name, $ID, $othername)
{
    echo ($email);
    $to = "$email";
    $subject = 'Confirmation';
    $txt = 'Body text goes here';

    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers = 'Content-type: text/html; charset=iso-8859-1' . "\r\n";  
    $headers = 'From: donotreply@sampleweb.net' . "\r\n";

    mail($to, $subject, $txt, $headers);
}

在该代码中没有使用某些参数,因为我在正文中使用它们来发布此示例。我有另一个测试表单,其功能就像这样,它完美无缺。调用该函数,Test Mail Server Tool接收电子邮件并保存。函数内部的电子邮件输出也不会输出任何内容。

我检查了逻辑错误,检查以确保变量有值,以及几乎我能想到的任何东西。有什么建议/想法吗?

2 个答案:

答案 0 :(得分:1)

正如其他人所说。

此外,我强烈建议您使用简单的邮件类。虽然这看起来有些过分,但它会为您处理所有这些标题问题,并允许您在需要时使用HTML和附件。

PHPmailer是一个很好的课程http://phpmailer.worxware.com/

Rmail是另一个https://github.com/evpozdniakov/FW/blob/master/lib/Rmail/Rmail.php

我确信有很多更好的开发和简单的类可供使用。邮件标题有时可能很棘手。特别是当您开始添加附件和HTML时。最好花时间设计您的网站或业务逻辑。而且,不是重新发明轮子。

我发现在使用\r\n代替\n时某些系统很挑剔,并且在没有正确的行结尾的情况下不会发送邮件。

一如既往,很高兴我能提供帮助。

答案 1 :(得分:0)

composeEmail($email, $name, $IDnumber, $othername)
composeEmail($email, $name, $ID, $othername) - 您正在使用不同的ID变量。

另外,你缺少第2和第3个标题的连接数。

echo ($email);
$to = "$email";
$subject = 'Confirmation';
$txt = 'Body text goes here';

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";  
$headers .= 'From: donotreply@sampleweb.net' . "\r\n";

mail($to, $subject, $txt, $headers);

这就是你headers被打破的原因。

另外,如果你的问题留下了所有评论,那些应该说明一点,不要觉得我应该在这里重复一遍。

  • 事实证明,这是一项集体努力。如果其他任何人为解决方案做出了贡献并且愿意添加答案,我将很乐意提出建议。