Rezolvă rapid problema emailurilor de resetare parolă blocate în SMF 2.1.6 – Ghid practic pentru administratori

Dacă folosești Simple Machines Forum (SMF) 2.1.6 și întâmpini situația în care emailurile de resetare a parolei rămân blocate în coada de emailuri, iar celelalte notificări (înregistrare, aprobare) se trimit fără probleme, ai dat peste un bug cunoscut. Această problemă afectează doar funcționalitatea de resetare parolă și poate crea dificultăți serioase utilizatorilor care și-au uitat parola.

Problema: Emailuri de resetare parolă blocate în coadă

SMF 2.1.6 are un bug specific: emailurile de resetare parolă rămân mereu în coada de emailuri, cu „time_sent” setat, însă nu ajung niciodată la destinatari. Simptomele observate:

  • Alte emailuri se trimit normal – notificările de înregistrare sau aprobare funcționează perfect
  • Funcția PHP mail() merge – emailurile de test se trimit cu succes
  • Doar emailurile de resetare eșuează – rămân în queue și nu pleacă
  • Procesarea cozii nu ajută – rularea cron.php nu rezolvă situația

Cauza: Bug de prioritate la expediere

Problema apare la apelarea funcției sendmail() în sistemul de resetare parolă al SMF. Emailurile de resetare primesc prioritate 1, ceea ce le plasează în coadă, unde pot rămâne blocate din cauza unui bug de procesare. Toate celelalte emailuri SMF sunt trimise cu prioritate 0, adică imediat, fără a intra în coadă – de aici și diferența de comportament.

Soluția: Fix rapid, în 4 pași

Pasul 1: Găsește fișierul problematic

Intră în directorul instalării SMF și deschide fișierul:

Sources/Reminder.php

Pasul 2: Identifică linia cu problema

Caută funcția RemindPick() și localizează linia (aprox. linia 87):

sendmail($row['email_address'], $emaildata['subject'], $emaildata['body'], null, 'reminder', $emaildata['is_html'], 1);

Pasul 3: Aplică modificarea

Schimbă ultimul parametru din 1 în 0:

sendmail($row['email_address'], $emaildata['subject'], $emaildata['body'], null, 'reminder', $emaildata['is_html'], 0);

Pasul 4: Salvează și testează

Salvează fișierul și testează resetarea parolei. Emailurile ar trebui să ajungă instant, fără să se mai blocheze în queue.

Explicație: Prioritățile în funcția sendmail()

Ultimul parametru în sendmail() definește prioritatea:

  • Prioritate 0: trimite imediat, fără coadă
  • Prioritate 1: plasare în queue (unde apare bugul SMF 2.1.6)
  • Prioritate 9: prioritate maximă, dar poate genera alte probleme

De ce această rezolvare funcționează?

  1. Ocolește complet sistemul de queue
  2. Emailurile pleacă instant la cererea utilizatorului
  3. Folosește același mecanism ca și emailurile funcționale din SMF
  4. Elimină orice bug asociat cu prioritate 1 sau mai mare

Troubleshooting: Emailurile tot nu ajung?

Testează funcția PHP mail()

Crează un fișier de test (testmail.php) cu următorul conținut:

 <?php $to = "adresa-ta@email.com"; $subject = "Test PHP Mail"; $message = "Test SMF Password Reset"; $headers = "From: admin@domeniul-tau.com"; if (mail($to, $subject, $message, $headers)) { echo "PHP mail() funcționează!"; } else { echo "PHP mail() nu funcționează!"; } ?> 

Verifică setările serverului

  • Funcția PHP mail() este activă pe server
  • Sendmail/Postfix configurat corect
  • Nu există limitări la trimiterea de emailuri
  • Firewall-ul nu blochează porturile SMTP

Alternativă: Configurare SMTP

  1. Accesează SMF Admin → Server Settings → Mail Settings
  2. Schimbă tipul de email din „PHP mail()” în „SMTP”
  3. Introduce setările SMTP (host, port, user, parola)
  4. Testează trimiterea emailurilor

Recomandări pentru viitor

  • Documentează modificările – Păstrează evidența fixurilor
  • Testează după update-uri – După un upgrade SMF, verifică dacă resetarea parolei funcționează
  • Monitorizează coada – Admin → Mail → Browse Queue
  • Folosește cron jobs – Asigură procesarea regulată a cozii de emailuri dacă folosești queue-ul

Concluzie

Bugul de resetare parolă din SMF 2.1.6 este foarte des întâlnit, dar rezolvarea este rapidă: modifică parametrul de prioritate la 0 pentru a trimite instant emailuri de resetare. Astfel, vei avea un sistem de notificare complet funcțional și utilizatori mulțumiți.

Ai nevoie de ajutor pentru forumul tău SMF? Contactează-ne!