簡體   English   中英

php無smtp服務器時的郵件錯誤處理

[英]php mail error handling when no smtp server

我制作了一個 php 頁面來發送 email。我會將此頁面提供給多個用戶,但我無法控制他們將使用的服務器。 而且其中一些應該沒有SMTP服務器。 所以我嘗試處理這個錯誤。

例如,在我自己的計算機上,如果我停用我的 SMTP 服務器,我會收到“PHP 警告:mail():無法連接到...的郵件服務器”錯誤消息。

我的代碼:

  try
  {
    $okmail=mail($to,$Subject,$texte,$headers);
  }
  catch (Exception $ex)
  {
    ...
  }

但是這段代碼不會拋出異常,它只會寫入錯誤消息(如“echo(...)”語句)。 我在 xmlhttprequest 頁面中使用此代碼並使用 xml 類型的響應。 但原始頁面在 xml 文本之前收到錯誤消息:PHP Warning: mail(): Failed to connect to mailserver at... \n1Email not send

我該如何處理這個“無 SMTP”錯誤?

謝謝!

如果我正確理解問題,則以下指令將隱藏警告。

ini_set('display_errors', 0);

您可以使用以下方法代替“try/catch”。

set_error_handler("warningHandler", E_USER_WARNING);

// Trigger some warning here for testing purposes only (this is just an example).
trigger_error('This here is the message from some warning ...', E_USER_WARNING);

// If you need DNS Resource Records associated with a hostname.
// $result = dns_get_record($_SERVER['HTTP_HOST']);

// Restores the previous error handler function.
restore_error_handler();

// This is your custom warning handler.
function warningHandler($errno, $errstr) {
    // Do what you want here ...
    echo $errno, ' ::: ', $errstr;
}

感謝您的回答,但沒有任何效果:(

我找到了一個解決方案,方法是在 mail() function 之后使用 ob_start(null,0,PHP_OUTPUT_HANDLER_CLEANABLE) 和 ob_clean() 清理 output 緩沖區。

不明白為什么mail function向output緩沖區寫入錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM