我目前在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
接收电子邮件并保存。函数内部的电子邮件输出也不会输出任何内容。
我检查了逻辑错误,检查以确保变量有值,以及几乎我能想到的任何东西。有什么建议/想法吗?
答案 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被打破的原因。
另外,如果你的问题留下了所有评论,那些应该说明一点,不要觉得我应该在这里重复一遍。