Problème lors de l'enregistrement d'un membre !

Bonsoir,

J’ai installer un forum sous une stable tout à l’heure, tout fonctionne bien mais lors de l’inscription d’un membre j’ai une erreur à la con !

[code]Failed sending email :: PHP ::

DEBUGGAGE

Ligne: 234
Fichier: /var/www/apache2-default/Premod Genesis/includes/emailer.php

Code de l’erreur trouvée:
Ligne-224:
Ligne-225: $board_config[‹ sendmail_fix ›] = 1;
Ligne-226: $result = @mail($to, $this->subject, preg_replace("#(?msg), $this->extra_headers);
Ligne-227: }
Ligne-228: }
Ligne-229:
Ligne-230: // Did it work?
Ligne-231: if (!$result)
Ligne-232: {
Ligne-233: message_die(GENERAL_ERROR, 'Failed sending email :: ’ . (($this->use_smtp) ? ‹ SMTP › : ‹ PHP ›) . ’ :: ’ . $result, ‹  ›, LINE, FILE);
Ligne-234: } [/code]

Apparemment il souhaite envoyer un mail au membre hors je n’ai pas de serveur smtp d’installer !

Le fichier qui pose problème est emailer.php qui se situe dans includes !

Donc comment faire pour qu’il n’utilise pas cette option, je précise que je l’ai déjà désactiver dans le panneau de contrôle du forum !

merci d’avance !

edit :
ps : un petit screen de l’erreur :

tu vire l’acces a la fonction qui envoie le mail en php directement dans le fichier ou tu peux commenter le fichier email.php ou encore tu peux configurer un serveur smtp :slightly_smiling:

fait voir le fichier complet email.php si il est trop long envois le en mp ou par mail

Etrange que tu es tant de problème !
Sinon vire l’espace aussi /Premod Genesis/

Espace ou pas ça marche tfassons, par contre c’était quoi la commande pour renommer tant qu’on y est !

Voici mon email.php

[code]

<?php /*************************************************************************** emailer.php ------------------- begin : Sunday Aug. 12, 2001 copyright : (C) 2001 The phpBB Group email : support@phpbb.com $Id: emailer.php,v 1.15.2.34 2003/07/26 11:41:35 acydburn Exp $ ***************************************************************************/ /*************************************************************************** * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * ***************************************************************************/ // // The emailer class has support for attaching files, that isn't implemented // in the 2.0 release but we can probable find some way of using it in a future // release // class emailer { var $msg, $subject, $extra_headers; var $addresses, $reply_to, $from; var $use_smtp; var $tpl_msg = array(); function emailer($use_smtp) { $this->reset(); $this->use_smtp = $use_smtp; $this->reply_to = $this->from = ''; } // Resets all the data (address, template file, etc etc to default function reset() { $this->addresses = array(); $this->vars = $this->msg = $this->extra_headers = ''; } // Sets an email address to send to function email_address($address) { $this->addresses['to'] = trim($address); } function cc($address) { $this->addresses['cc'][] = trim($address); } function bcc($address) { $this->addresses['bcc'][] = trim($address); } function replyto($address) { $this->reply_to = trim($address); } function from($address) { $this->from = trim($address); } // set up subject for mail function set_subject($subject = '') { $this->subject = trim(preg_replace('#[\n\r]+#s', '', $subject)); } // set up extra mail headers function extra_headers($headers) { $this->extra_headers .= trim($headers) . "\n"; } function use_template($template_file, $template_lang = '') { global $board_config, $phpbb_root_path; if (trim($template_file) == '') { message_die(GENERAL_ERROR, 'No template file set', '', __LINE__, __FILE__); } if (trim($template_lang) == '') { $template_lang = $board_config['default_lang']; } if (empty($this->tpl_msg[$template_lang . $template_file])) { $tpl_file = $phpbb_root_path . 'language/lang_' . $template_lang . '/email/' . $template_file . '.tpl'; if (!@file_exists(@phpbb_realpath($tpl_file))) { $tpl_file = $phpbb_root_path . 'language/lang_' . $board_config['default_lang'] . '/email/' . $template_file . '.tpl'; if (!@file_exists(@phpbb_realpath($tpl_file))) { message_die(GENERAL_ERROR, 'Could not find email template file :: ' . $template_file, '', __LINE__, __FILE__); } } if (!($fd = @fopen($tpl_file, 'r'))) { message_die(GENERAL_ERROR, 'Failed opening template file :: ' . $tpl_file, '', __LINE__, __FILE__); } $this->tpl_msg[$template_lang . $template_file] = fread($fd, filesize($tpl_file)); fclose($fd); } $this->msg = $this->tpl_msg[$template_lang . $template_file]; return true; } // assign variables function assign_vars($vars) { $this->vars = (empty($this->vars)) ? $vars : $this->vars . $vars; } // Send the mail out to the recipients set previously in var $this->address function send() { global $board_config, $lang, $phpEx, $phpbb_root_path, $db; // Escape all quotes, else the eval will fail. $this->msg = str_replace ("'", "\'", $this->msg); $this->msg = preg_replace('#\{([a-z0-9\-_]*?)\}#is', "' . $\\1 . '", $this->msg); // Set vars reset ($this->vars); while (list($key, $val) = each($this->vars)) { $$key = $val; } eval("\$this->msg = '$this->msg';"); // Clear vars reset ($this->vars); while (list($key, $val) = each($this->vars)) { unset($$key); } // We now try and pull a subject from the email body ... if it exists, // do this here because the subject may contain a variable $drop_header = ''; $match = array(); if (preg_match('#^(Subject:(.*?))$#m', $this->msg, $match)) { $this->subject = (trim($match[2]) != '') ? trim($match[2]) : (($this->subject != '') ? $this->subject : 'No Subject'); $drop_header .= '[\r\n]*?' . preg_quote($match[1], '#'); } else { $this->subject = (($this->subject != '') ? $this->subject : 'No Subject'); } if (preg_match('#^(Charset:(.*?))$#m', $this->msg, $match)) { $this->encoding = (trim($match[2]) != '') ? trim($match[2]) : trim($lang['ENCODING']); $drop_header .= '[\r\n]*?' . preg_quote($match[1], '#'); } else { $this->encoding = trim($lang['ENCODING']); } if ($drop_header != '') { $this->msg = trim(preg_replace('#' . $drop_header . '#s', '', $this->msg)); } $to = $this->addresses['to']; $cc = (count($this->addresses['cc'])) ? implode(', ', $this->addresses['cc']) : ''; $bcc = (count($this->addresses['bcc'])) ? implode(', ', $this->addresses['bcc']) : ''; // Build header $this->extra_headers = (($this->reply_to != '') ? "Reply-to: $this->reply_to\n" : '') . (($this->from != '') ? "From: $this->from\n" : "From: " . $board_config['board_email'] . "\n") . "Return-Path: " . $board_config['board_email'] . "\nMessage-ID: <" . md5(uniqid(time())) . "@" . $board_config['server_name'] . ">\nMIME-Version: 1.0\nContent-type: text/plain; charset=" . $this->encoding . "\nContent-transfer-encoding: 8bit\nDate: " . date('r', time()) . "\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\nX-MimeOLE: Produced By phpBB2\n" . $this->extra_headers . (($cc != '') ? "Cc: $cc\n" : '') . (($bcc != '') ? "Bcc: $bcc\n" : ''); // Send message ... removed $this->encode() from subject for time being if ( $this->use_smtp ) { if ( !defined('SMTP_INCLUDED') ) { include($phpbb_root_path . 'includes/smtp.' . $phpEx); } $result = smtpmail($to, $this->subject, $this->msg, $this->extra_headers); } else { $empty_to_header = ($to == '') ? TRUE : FALSE; $to = ($to == '') ? (($board_config['sendmail_fix']) ? ' ' : 'Undisclosed-recipients:;') : $to; $result = @mail($to, $this->subject, preg_replace("#(?msg), $this->extra_headers); if (!$result && !$board_config['sendmail_fix'] && $empty_to_header) { $to = ' '; $sql = "UPDATE " . CONFIG_TABLE . " SET config_value = '1' WHERE config_name = 'sendmail_fix'"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Unable to update config table', '', __LINE__, __FILE__, $sql); } $board_config['sendmail_fix'] = 1; $result = @mail($to, $this->subject, preg_replace("#(?msg), $this->extra_headers); } } // Did it work? if (!$result) { message_die(GENERAL_ERROR, 'Failed sending email :: ' . (($this->use_smtp) ? 'SMTP' : 'PHP') . ' :: ' . $result, '', __LINE__, __FILE__); } return true; } // Encodes the given string for proper display for this encoding ... nabbed // from php.net and modified. There is an alternative encoding method which // may produce lesd output but it's questionable as to its worth in this // scenario IMO function encode($str) { if ($this->encoding == '') { return $str; } // define start delimimter, end delimiter and spacer $end = "?="; $start = "=?$this->encoding?B?"; $spacer = "$end\r\n $start"; // determine length of encoded text within chunks and ensure length is even $length = 75 - strlen($start) - strlen($end); $length = floor($length / 2) * 2; // encode the string and split it into chunks with spacers after each chunk $str = chunk_split(base64_encode($str), $length, $spacer); // remove trailing spacer and add start and end delimiters $str = preg_replace('#' . preg_quote($spacer, '#') . '$#', '', $str); return $start . $str . $end; } // // Attach files via MIME. // function attachFile($filename, $mimetype = "application/octet-stream", $szFromAddress, $szFilenameToDisplay) { global $lang; $mime_boundary = "--==================_846811060==_"; $this->msg = '--' . $mime_boundary . "\nContent-Type: text/plain;\n\tcharset=\"" . $lang['ENCODING'] . "\"\n\n" . $this->msg; if ($mime_filename) { $filename = $mime_filename; $encoded = $this->encode_file($filename); } $fd = fopen($filename, "r"); $contents = fread($fd, filesize($filename)); $this->mimeOut = "--" . $mime_boundary . "\n"; $this->mimeOut .= "Content-Type: " . $mimetype . ";\n\tname=\"$szFilenameToDisplay\"\n"; $this->mimeOut .= "Content-Transfer-Encoding: quoted-printable\n"; $this->mimeOut .= "Content-Disposition: attachment;\n\tfilename=\"$szFilenameToDisplay\"\n\n"; if ( $mimetype == "message/rfc822" ) { $this->mimeOut .= "From: ".$szFromAddress."\n"; $this->mimeOut .= "To: ".$this->emailAddress."\n"; $this->mimeOut .= "Date: ".date("D, d M Y H:i:s") . " UT\n"; $this->mimeOut .= "Reply-To:".$szFromAddress."\n"; $this->mimeOut .= "Subject: ".$this->mailSubject."\n"; $this->mimeOut .= "X-Mailer: PHP/".phpversion()."\n"; $this->mimeOut .= "MIME-Version: 1.0\n"; } $this->mimeOut .= $contents."\n"; $this->mimeOut .= "--" . $mime_boundary . "--" . "\n"; return $out; // added -- to notify email client attachment is done } function getMimeHeaders($filename, $mime_filename="") { $mime_boundary = "--==================_846811060==_"; if ($mime_filename) { $filename = $mime_filename; } $out = "MIME-Version: 1.0\n"; $out .= "Content-Type: multipart/mixed;\n\tboundary=\"$mime_boundary\"\n\n"; $out .= "This message is in MIME format. Since your mail reader does not understand\n"; $out .= "this format, some or all of this message may not be legible."; return $out; } // // Split string by RFC 2045 semantics (76 chars per line, end with \r\n). // function myChunkSplit($str) { $stmp = $str; $len = strlen($stmp); $out = ""; while ($len > 0) { if ($len >= 76) { $out .= substr($stmp, 0, 76) . "\r\n"; $stmp = substr($stmp, 76); $len = $len - 76; } else { $out .= $stmp . "\r\n"; $stmp = ""; $len = 0; } } return $out; } // // Split the specified file up into a string and return it // function encode_file($sourcefile) { if (is_readable(phpbb_realpath($sourcefile))) { $fd = fopen($sourcefile, "r"); $contents = fread($fd, filesize($sourcefile)); $encoded = $this->myChunkSplit(base64_encode($contents)); fclose($fd); } return $encoded; } } // class emailer ?>[/code]

Sinon c’est longs et compliquer d’installer un serveur smtp ??

merci de votre aide :wink:

pour installer un serveur smtp voir forum.debian-fr.org/viewtopic.php?t=2081 :slightly_smiling:

ps: t pas souvent sur le chat :confused:

merci :wink:

J’y suis pas souvent car j’ai pas trop le temps

Explication je rentre à 20h chez moi je mange une douche déja 21h

Ensuite je fais tout les devoirs et je fini tard après dodo !

Sinon je vais essayer de régler le probléme du beug et pour installer un serveur smtp on verra plus tard !

Je sais qu’il faut modifier quelque chose dans ce fichier mais je sais plus c’était ou, si quelqu’un le sait !

merci d’avance !

Si je mets un fix à votre avis sa devrai marcher ou pas car je suis en local et c’est plutôt prévu pour les hébergeurs !

merci

[code] // Send the mail out to the recipients set previously in var $this->address
function send()
{/*
global $board_config, $lang, $phpEx, $phpbb_root_path, $db;

   // Escape all quotes, else the eval will fail.
  $this->msg = str_replace ("'", "\'", $this->msg);
  $this->msg = preg_replace('#\{([a-z0-9\-_]*?)\}#is', "' . $\\1 . '", $this->msg);

  // Set vars
  reset ($this->vars);
  while (list($key, $val) = each($this->vars)) 
  {
     $$key = $val;
  }

  eval("\$this->msg = '$this->msg';");

  // Clear vars
  reset ($this->vars);
  while (list($key, $val) = each($this->vars)) 
  {
     unset($$key);
  }

  // We now try and pull a subject from the email body ... if it exists,
  // do this here because the subject may contain a variable
  $drop_header = '';
  $match = array();
  if (preg_match('#^(Subject:(.*?))$#m', $this->msg, $match))
  {
     $this->subject = (trim($match[2]) != '') ? trim($match[2]) : (($this->subject != '') ? $this->subject : 'No Subject');
     $drop_header .= '[\r\n]*?' . preg_quote($match[1], '#');
  }
  else
  {
     $this->subject = (($this->subject != '') ? $this->subject : 'No Subject');
  }

  if (preg_match('#^(Charset:(.*?))$#m', $this->msg, $match))
  {
     $this->encoding = (trim($match[2]) != '') ? trim($match[2]) : trim($lang['ENCODING']);
     $drop_header .= '[\r\n]*?' . preg_quote($match[1], '#');
  }
  else
  {
     $this->encoding = trim($lang['ENCODING']);
  }

  if ($drop_header != '')
  {
     $this->msg = trim(preg_replace('#' . $drop_header . '#s', '', $this->msg));
  }

  $to = $this->addresses['to'];

  $cc = (count($this->addresses['cc'])) ? implode(', ', $this->addresses['cc']) : '';
  $bcc = (count($this->addresses['bcc'])) ? implode(', ', $this->addresses['bcc']) : '';

  // Build header
  $this->extra_headers = (($this->reply_to != '') ? "Reply-to: $this->reply_to\n" : '') . (($this->from != '') ? "From: $this->from\n" : "From: " . $board_config['board_email'] . "\n") . "Return-Path: " . $board_config['board_email'] . "\nMessage-ID: <" . md5(uniqid(time())) . "@" . $board_config['server_name'] . ">\nMIME-Version: 1.0\nContent-type: text/plain; charset=" . $this->encoding . "\nContent-transfer-encoding: 8bit\nDate: " . date('r', time()) . "\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\nX-MimeOLE: Produced By phpBB2\n" . $this->extra_headers . (($cc != '') ? "Cc: $cc\n" : '')  . (($bcc != '') ? "Bcc: $bcc\n" : ''); 

  // Send message ... removed $this->encode() from subject for time being
  if ( $this->use_smtp )
  {
     if ( !defined('SMTP_INCLUDED') ) 
     {
        include($phpbb_root_path . 'includes/smtp.' . $phpEx);
     }

     $result = smtpmail($to, $this->subject, $this->msg, $this->extra_headers);
  }
  else
  {
     $empty_to_header = ($to == '') ? TRUE : FALSE;
     $to = ($to == '') ? (($board_config['sendmail_fix']) ? ' ' : 'Undisclosed-recipients:;') : $to;

     $result = @mail($to, $this->subject, preg_replace("#(?<!\r)\n#s", "\n", $this->msg), $this->extra_headers);
     
     if (!$result && !$board_config['sendmail_fix'] && $empty_to_header)
     {
        $to = ' ';

        $sql = "UPDATE " . CONFIG_TABLE . " 
           SET config_value = '1'
           WHERE config_name = 'sendmail_fix'";
        if (!$db->sql_query($sql))
        {
           message_die(GENERAL_ERROR, 'Unable to update config table', '', __LINE__, __FILE__, $sql);
        }

        $board_config['sendmail_fix'] = 1;
        $result = @mail($to, $this->subject, preg_replace("#(?<!\r)\n#s", "\n", $this->msg), $this->extra_headers);
     }
  }

  // Did it work?
  if (!$result)
  {
     message_die(GENERAL_ERROR, 'Failed sending email :: ' . (($this->use_smtp) ? 'SMTP' : 'PHP') . ' :: ' . $result, '', __LINE__, __FILE__);
  }

  return true;*/

}
[/code]Tu peux déjà regarder avec ce fichier la j’ai juste mis en commentaire la fonction send ce qui eviteras l’envois et donc l’erreur mais bon c’est pas vraiment une solution propre faudrait voir pour faire cela mieux :slightly_smiling:

Comme tu dis ça peux dépanner pour l’instant mais c’est pas le mieux !

Il ya une chose que j’ai pas comprise, Tu a commenter quel ligne ??

[code] // Did it work?
if (!$result)
{
message_die(GENERAL_ERROR, 'Failed sending email :: ’ . (($this->use_smtp) ? ‘SMTP’ : ‘PHP’) . ’ :: ’ . $result, ‘’, LINE, FILE);
}

  return true;*/

} [/code]

merci ash sympa de m’aider !

toute la fonction send de maniere a ce qu’il ne se passe rien :stuck_out_tongue: et qu’il n’y est pas de probleme

J’ai pas exactement vérifier ce que t’a modifier, demain je prendrai ta source et je remplacerai avec mon fichier

Je te tiens au courant merci ash

J’ai remplacer mon fichier par le tien l’inscription s’effectue mais il y a ce message de warning en haut de l’écran pas très sympatique plutôt inquiétante !

J’espère que t’a une idée, la mienne c’est qu’il faut encore modifier quelque chose dans ce fichier mais quoi alors là je ne saurai te dire !

merci de ton aide en tout cas !

Vi j’avais pas pensé aux headers c’est pas grands choses donc 2 solutions soit on s’arrange pour qu’il n’y est plus ces warnings soit on les camoufles.

Je te poste que la fonction send modifié car sinon ca fait un peu lourd d’ailleurs j’ai édité mon post pour ne laissé que celle la :stuck_out_tongue:

[code] // Send the mail out to the recipients set previously in var $this->address
function send()
{
global $board_config, $lang, $phpEx, $phpbb_root_path, $db;

   // Escape all quotes, else the eval will fail.
  $this->msg = str_replace ("'", "\'", $this->msg);
  $this->msg = preg_replace('#\{([a-z0-9\-_]*?)\}#is', "' . $\\1 . '", $this->msg);

  // Set vars
  reset ($this->vars);
  while (list($key, $val) = each($this->vars))
  {
     $$key = $val;
  }

  eval("\$this->msg = '$this->msg';");

  // Clear vars
  reset ($this->vars);
  while (list($key, $val) = each($this->vars))
  {
     unset($$key);
  }

  // We now try and pull a subject from the email body ... if it exists,
  // do this here because the subject may contain a variable
  $drop_header = '';
  $match = array();
  if (preg_match('#^(Subject:(.*?))$#m', $this->msg, $match))
  {
     $this->subject = (trim($match[2]) != '') ? trim($match[2]) : (($this->subject != '') ? $this->subject : 'No Subject');
     $drop_header .= '[\r\n]*?' . preg_quote($match[1], '#');
  }
  else
  {
     $this->subject = (($this->subject != '') ? $this->subject : 'No Subject');
  }

  if (preg_match('#^(Charset:(.*?))$#m', $this->msg, $match))
  {
     $this->encoding = (trim($match[2]) != '') ? trim($match[2]) : trim($lang['ENCODING']);
     $drop_header .= '[\r\n]*?' . preg_quote($match[1], '#');
  }
  else
  {
     $this->encoding = trim($lang['ENCODING']);
  }

  if ($drop_header != '')
  {
     $this->msg = trim(preg_replace('#' . $drop_header . '#s', '', $this->msg));
  }

  $to = $this->addresses['to'];

  $cc = (count($this->addresses['cc'])) ? implode(', ', $this->addresses['cc']) : '';
  $bcc = (count($this->addresses['bcc'])) ? implode(', ', $this->addresses['bcc']) : '';

  // Build header
  $this->extra_headers = (($this->reply_to != '') ? "Reply-to: $this->reply_to\n" : '') . (($this->from != '') ? "From: $this->from\n" : "From: " . $board_config['board_email'] . "\n") . "Return-Path: " . $board_config['board_email'] . "\nMessage-ID: <" . md5(uniqid(time())) . "@" . $board_config['server_name'] . ">\nMIME-Version: 1.0\nContent-type: text/plain; charset=" . $this->encoding . "\nContent-transfer-encoding: 8bit\nDate: " . date('r', time()) . "\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\nX-MimeOLE: Produced By phpBB2\n" . $this->extra_headers . (($cc != '') ? "Cc: $cc\n" : '')  . (($bcc != '') ? "Bcc: $bcc\n" : '');

  // Send message ... removed $this->encode() from subject for time being
  if ( $this->use_smtp )
  {
     if ( !defined('SMTP_INCLUDED') )
     {
        include($phpbb_root_path . 'includes/smtp.' . $phpEx);
     }

     $result = smtpmail($to, $this->subject, $this->msg, $this->extra_headers);
  }
  else
  {
     $empty_to_header = ($to == '') ? TRUE : FALSE;
     $to = ($to == '') ? (($board_config['sendmail_fix']) ? ' ' : 'Undisclosed-recipients:;') : $to;

     $result = @mail($to, $this->subject, preg_replace("#(?<!\r)\n#s", "\n", $this->msg), $this->extra_headers);
     
     if (!$result && !$board_config['sendmail_fix'] && $empty_to_header)
     {
        $to = ' ';

        $sql = "UPDATE " . CONFIG_TABLE . "
           SET config_value = '1'
           WHERE config_name = 'sendmail_fix'";
        if (!$db->sql_query($sql))
        {
           message_die(GENERAL_ERROR, 'Unable to update config table', '', __LINE__, __FILE__, $sql);
        }

        $board_config['sendmail_fix'] = 1;
        $result = @mail($to, $this->subject, preg_replace("#(?<!\r)\n#s", "\n", $this->msg), $this->extra_headers);
     }
  }

  // Did it work?
  /*if (!$result)
  {
     message_die(GENERAL_ERROR, 'Failed sending email :: ' . (($this->use_smtp) ? 'SMTP' : 'PHP') . ' :: ' . $result, '', __LINE__, __FILE__);
  }*/

  return true;

} [/code]La solution mise en place est d’évité d’afficher l’erreur si le message n’est pas envoyé et donc la fonction send renverra true a chaque fois ca évite les warnings je pense que la il devrait y avoir moins de probleme qu’avec mon ancienne intervention.

Garde le fichier emailer.php et modifie juste la fonction send par celle-ci :smiley:

Salut, dsl de te répondre que maintenant une sortie avec l’école !

J’ai remplacer le passage de mon fichier emailer.php par ce que tu m’a proposer, je n’ai pas redémarrez apache ni quoi que ce soit !

Je me suis enregsitrer avec un nouveau membre mais lors de la fin de l’incription la même erreur ! :confused:

J’ai pas de chance moi !

merci de ton aide ash

J’ai chercher un peu sur le web mais sans suite positive !

Tu ne vois pas toi non plus !

:confused:

C’est exactement le meme message ou il y a une variante???

Est-ce aussi une erreur au niveau des headers???

J’ai pas eu le temps d’y regarder ces derniers jours je vais voir a ça.

C’est le même message qui apparait :confused:

Prends t’on temps :wink: