PHP mail()不发送电子邮件

时间:2013-11-15 22:32:33

标签: 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, $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_dump,正如预期的那样,它只给出一个'FALSE'。

“localhost”的改变也没有办法解决问题。还在搜索...

1 个答案:

答案 0 :(得分:0)

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

它仍然使用与没有phpmailer类相同的smtp服务器。因此,我唯一可以想到的事实是,PHPmailer创建了一个与PHP默认的邮件标题不同的,更加宽泛的邮件标题。

我添加了以下代码和类PHP邮件程序:

$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;
    }
}