PHP mail()不';不要发电子邮件

PHP mail()不';不要发电子邮件,php,email,error-handling,Php,Email,Error Handling,我有一个问题要问大家 我注意到我的php邮件不再发送了。所以我调查了一下,确定问题出在哪里,但我似乎找不到 情况就是这样: 在powershell 3(server 2012)中,我使用以下命令: send-MailMessage -SmtpServer smtp.versatel.nl 在给出收件人电子邮件地址、主题和发件人地址后,它会毫无问题地发送邮件 PHP文件中的代码是: INI_SET("SMTP", "smtp.versatel.nl"); $success = mail($to,

我有一个问题要问大家

我注意到我的php邮件不再发送了。所以我调查了一下,确定问题出在哪里,但我似乎找不到

情况就是这样:

在powershell 3(server 2012)中,我使用以下命令:

send-MailMessage -SmtpServer smtp.versatel.nl
在给出收件人电子邮件地址、主题和发件人地址后,它会毫无问题地发送邮件

PHP文件中的代码是:

INI_SET("SMTP", "smtp.versatel.nl");
$success = mail($to, $subject, $body, $header);

preg_match("/\d+/", $error["message"], $error);
if(!$success){$this->sFoutmelding ='Email is niet verstuurd.'.print_r($error);}
在php.ini中,我禁用了默认的ini设置:

mail function]
; For Win32 only.
; SMTP = Smtp.versatel.nl
; smtp_port = 25
但我仍然收到一个错误,邮件未发送:

Array ( )
Email is niet verstuurd.1
当powershell做得很好时,为什么php不发送邮件? 任何想法都是受欢迎的,我已经在互联网上搜索了整整一周,但我找不到答案

*编辑

我尝试了var_转储,正如预期的那样,它只给出了一个“FALSE”


另外,“localhost”中的更改也没有起作用。仍然在搜索…

它在工作,但仍然没有爆炸为什么:-)所以如果有人知道为什么,我也想知道:-)

它仍然使用与没有phpmailer类的smtp服务器相同的smtp服务器。因此,我唯一能想到的是,PHPmailer创建了一个不同的、更广泛例外的邮件头,而不是PHP的默认邮件头

我添加了以下代码和类PHP mailer:

$success = $this->mail_attachment($to, $subject, $body);

protected function mail_attachment($mailto, $subject, $message) {
require_once("../PHPMailer/class.phpmailer.php");
//$file = $path.$filename;
$mail = new PHPMailer();

$mail->IsSMTP();  // telling the class to use SMTP
$mail->Host     = "smtp.versatel.nl"; // SMTP server

$mail->From     = "noreply@provider.foo";
$mail->FromName = "Sendername";
$mail->AddAddress($mailto);


$mail->Subject  = $subject;
$mail->Body     = $message;
$mail->WordWrap = 75;
//$mail->AddAttachment($file);

    if(!$mail->Send()) {
      echo 'Bevestigings e-mail is niet verzonden.';
      echo 'Mailer error is: ' . $mail->ErrorInfo;
    }
}

mail
函数上放置一个
var\u dump
,找出它返回的内容(真/假)-我们在这里假设它返回的是假,但最好确定一下。这不是解决问题的具体方法,但我建议您使用像swiftmailer或PHPMailer这样的已建立的邮件库。一些提供商因为错误的邮件头和其他原因而拒绝邮件。你不想处理所有这些问题!由于您的计算机可以连接到远程服务器,因此它必须返回特定的错误消息-如果在错误报告中不可见,请尝试使用wireshark点击连接。识别错误后,请与SMTP提供商联系。我会检查邮件服务器日志,查看它们是否记录了连接尝试。我不懂PHP,所以这可能是一个愚蠢的问题,但看起来您已经禁用了默认服务器和端口设置,但只为服务器提供了一个新值。它需要那个端口设置吗?