我对你们所有人都有疑问。
我注意到我的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”的改变也没有办法解决问题。还在搜索...
答案 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;
}
}