3

strlen $mail->SMTPDebug が 10 以上の場合に "Fail" を表示したいのですが、$mail->SMTPDebug を文字列として使用する方法がわかりません。関数の下の行は、デバッグを有効にします。

$mail->SMTPDebug  = 1;     

しかし、関数内で if ステートメントを使用することはできません。どうやってやるの ?

function mailsender($val,$yollayan,$sifresi,$name,$subject,$message) {

$mail = new PHPMailer();  
$mail->IsSMTP();               
$mail->SMTPDebug  = 1;          
$mail->SMTPAuth = true;         
$mail->SMTPSecure = "tls";      

$mail->Username   = $yollayan;
$mail->Password   = $sifresi;

$mail->Host = "smtp.live.com";  
$mail->Port = "587";  


$mail->From = $yollayan;
$mail->Fromname = $name;
$mail->name = $name;


$mail->Subject = $subject;  
$mail->Body = $message;  
$mail->AddAddress($val);   
$mail->send();

}
4

2 に答える 2

3

デバッグログで何かしたいと思っていますか?class.smtp.php (行 114-126) の読み取り:

/**
 * How to handle debug output.
 * Options:
 * * `echo` Output plain-text as-is, appropriate for CLI
 * * `html` Output escaped, line breaks converted to `<br>`, appropriate for browser output
 * * `error_log` Output to error log as configured in php.ini
 *
 * Alternatively, you can provide a callable expecting two params: a message string and the debug level:
 * <code>
 * $smtp->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";};
 * </code>
 * @type string|callable
 */

したがって、コードでは、単純に

$mail->Debugoutput = function($str, $level) { do_something_with($str); };

于 2014-10-11T07:38:48.533 に答える
3

出力を変数に格納するには、の子クラスを作成し、メソッドをPHPMailer再定義する必要があります。edebug

class MyPHPMailer extends PHPMailer {

  public $DbgOut = '';

  private function edebug($str) {
    $this->DbgOut .= $str;
  }

}

そして、あなたはそれを次のように呼びます:

function mailsender($val, $yollayan, $sifresi, $name, $subject, $message) {

  $mail = new MyPHPMailer();  
  $mail->IsSMTP();               
  $mail->SMTPDebug  = 1;          
  $mail->SMTPAuth = true;         
  $mail->SMTPSecure = "tls";      

  $mail->Username   = $yollayan;
  $mail->Password   = $sifresi;

  $mail->Host = "smtp.live.com";  
  $mail->Port = "587";  


  $mail->From = $yollayan;
  $mail->Fromname = $name;
  $mail->name = $name;


  $mail->Subject = $subject;  
  $mail->Body = $message;  
  $mail->AddAddress($val); 
  $mail->send();

  if(strlen($mail->DbgOut) > 10)
    echo 'Failed'.PHP_EOL;

}
于 2012-07-23T01:22:05.990 に答える