我目前正在使用自定义库。直到这个图书馆工作得非常好。从今天开始,它显然是假的。
库本身它基本上是函数邮件的包装器。它构建了“边界”部分和所有内容。
由于课程相当大,我不会在这里发布...但我想知道,理论上为什么邮件会返回错误的原因是什么?
sender<sender@email.com
&gt; [编辑] 刚刚找到一个较小的功能但仍无法正常工作,我会将其打印出来:
function send_html($from, $email, $subject = "AUCUN", $message, $cc = "", $bcc ="", $priotity = "3") {
$headers = "";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
if (strpos($from, "ourwebsite.com") != false || strpos($from, "rencontresportive.com") != "") {
$headers .= "From: Ourwebsite.com <" . $from . ">\r\n";
} else {
$headers .= "From: " . $from . " <" . $from . ">\r\n";
}
$headers .= "X-Sender: <" . $from . ">\r\n";
$headers .= "X-Priority: " . $priotity . "\r\n";
$headers .= "X-Mailer: PHP\r\n";
$headers .= "Return-Path: <admin@ourwebsite.com>\r\n";
if ($cc != "") {
$headers .= "cc:" . $cc . "\r\n";
}
if ($bcc != "") {
$headers .= "bcc:" . $bcc . "\r\n";
}
if (mail($email, $subject, $message, $headers)) {
return true;
} else {
return false;
}
}
我打电话给:
send_html(contact@ourwebsite.com, me@me.com, utf8_decode("the subject"), "<h1>test</h1>");
答案 0 :(得分:15)
我遇到了同样的问题。 在php升级之后,mail函数总是返回false。
我用这个小片段来查看它:
<?php
error_reporting(E_ALL|E_STRICT);
ini_set('display_errors', 1);
echo 'I am : ' . `whoami`;
$result = mail('myaddress@mydomain.com','Testing 1 2 3','This is a test.');
echo '<hr>Result was: ' . ( $result === FALSE ? 'FALSE' : 'TRUE') . $result;
echo '<hr>';
echo phpinfo();
解决方案是在我的php.ini中为'sendmail_from'和'sendmail_path'设置一个值。 我的案例中的正确值是:
sendmail_from = "no-reply@mydomain.net"
sendmail_path = "/usr/sbin/sendmail -t -i"
(我正在使用CentOS 5.3 w / Zend Server CE。)
您可以使用ini_set()来设置'sendmail_from'的值,但必须在php.ini或http.conf中设置'sendmail_path'var。
答案 1 :(得分:6)
我有类似的问题,即使收到成功的电子邮件,邮件功能也总是返回false。
我在php配置文件php.ini中找到了, 我已经设置了
; For Win32 only.
;sendmail_from = me@example.com
; For Unix only.
sendmail_path = "/usr/sbin/sendmail -t -i -f "care@mydomain.com"
我已将其更改为
; For Win32 only.
;sendmail_from = me@example.com
; For Unix only.
sendmail_path = /usr/sbin/sendmail -t -i -f care@mydomain.com
根据这个sendmail_from是针对win32的,所以在* unix OS中我们需要设置sendmail_path变量中显示的值。
此致 Minesh
答案 2 :(得分:4)
如果该类只是函数邮件的包装器,我会尝试打印一个文件,调用邮件函数时使用的参数
答案 3 :(得分:4)
尝试设置
ini_set('sendmail_from', $from);
如果你能向我们展示代码,那么就会更容易看出出现了什么问题。
答案 4 :(得分:2)
您尝试将其发送到的地址可能是,处理它的服务器拒绝邮件。
有太多变数需要确定。
答案 5 :(得分:0)
您是否认为mail()函数适用于您已测试的函数?我会检查以确保库不仅仅是传递了mail()函数的失败。
如果您已经测试了这个假设,我会检查库中的return语句,看看我是否能找到会导致错误值的内容。即使在未记录的代码中,这通常也是合理可行的。
答案 6 :(得分:0)
一个好的开始是检查错误日志。
例如对于apache和Ubuntu,错误日志位于/var/log/apache2/error.log
下。
这可以为您提供确切原因的线索。