phpBB Italia chiude!
phpBB Italia ringrazia tutti gli utenti che hanno dato fiducia al nostro progetto per ben 9 anni, e che, grazie al grande lavoro fatto da tutto lo Staff (rigorosamente a titolo gratuito), hanno portato il portale a diventare il principale punto di riferimento italiano alla piattaforma phpBB.

Purtroppo, causa motivi personali, non ho più modo di gestirlo e portarlo avanti. Il forum viene ora posto in uno stato di sola lettura, nonché un archivio storico per permettere a chiunque di fruire di tutte le discussioni trattate.

Il nuovo portale di assistenza per l'Italia di phpBB diventa phpBB-Store.it, cui ringrazio per aver deciso di portare avanti questo grande progetto.

Grazie ancora,
Carlo - Amministratore di phpBB Italia

Problema funzione php MAIL() su PHPBB

Supporto per phpBB 3.0.x.
Rispondi
Actze
Utente
Utente
Messaggi: 27
Iscritto il: 17/02/2012, 10:37
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.2.4
Database: MySQL 5.0.96-0ubuntu3

Problema funzione php MAIL() su PHPBB

Messaggio da Actze » 21/01/2014, 9:22

Per l'invio di email dal forum il mio hosting ha disabilitato la possibilità si usare l'smtp puntando a LOCALHOST e mi ha detto di usare la funzione mail() di php. Io ho cambiato le impostazioni sul forum togliendo l'smtp ma le mail non partono e sui logs ho questo errore:
Errore e-mail
» EMAIL/PHP/mail()

Ho subito pensato che l'hosting avesse bloccato anche questa funzione ma mi hanno detto di no e infatti mi hanno dato una paginetta php di test che funziona (contiene questo codice):

Codice: Seleziona tutto

<?php
$txt = "Prima linea di testo\nSeconda linea di testo";
// Send email
mail("miamail@miamail.it","soggetto della email",$txt);
?>
allora perchè ricevo errore con la funzione mail del forum?

Ho visto che la funzione mail() è gestita nel file includes/functions_messenger.php
con questo codice:

Codice: Seleziona tutto

/**
* Wrapper for sending out emails with the PHP's mail function
*/
function phpbb_mail($to, $subject, $msg, $headers, $eol, &$err_msg)
{
	global $config, $phpbb_root_path, $phpEx;

	// We use the EOL character for the OS here because the PHP mail function does not correctly transform line endings. On Windows SMTP is used (SMTP is \r\n), on UNIX a command is used...
	// Reference: http://bugs.php.net/bug.php?id=15841
	$headers = implode($eol, $headers);

	if (!class_exists('phpbb_error_collector'))
	{
		include($phpbb_root_path . 'includes/error_collector.' . $phpEx);
	}

	$collector = new phpbb_error_collector;
	$collector->install();

	// On some PHP Versions mail() *may* fail if there are newlines within the subject.
	// Newlines are used as a delimiter for lines in mail_encode() according to RFC 2045 section 6.8.
	// Because PHP can't decide what is wanted we revert back to the non-RFC-compliant way of separating by one space (Use '' as parameter to mail_encode() results in SPACE used)
	$result = $config['email_function_name']($to, mail_encode($subject, ''), wordwrap(utf8_wordwrap($msg), 997, "\n", true), $headers);

	$collector->uninstall();
	$err_msg = $collector->format_errors();

	return $result;
}
vi chiedo:
1-come posso visualizzare a schermo o nei logs in che modo viene tradotto il comando return $result;?
2-ho notato questo avviso nel codice:
// On some PHP Versions mail() *may* fail if there are newlines within the subject.
// Newlines are used as a delimiter for lines in mail_encode() according to RFC 2045 section 6.8.
// Because PHP can't decide what is wanted we revert back to the non-RFC-compliant way of separating by one space (Use '' as parameter to mail_encode() results in SPACE used)

come dovrei cambiare il codice per vedere se è quello il problema?

Actze
Utente
Utente
Messaggi: 27
Iscritto il: 17/02/2012, 10:37
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.2.4
Database: MySQL 5.0.96-0ubuntu3

Re: Problema funzione php MAIL() su PHPBB

Messaggio da Actze » 21/01/2014, 12:05

update!

in includes/functions_messenger.php
ho cambiato la linea

Codice: Seleziona tutto

$result = $config['email_function_name']($to, mail_encode($subject, ''), wordwrap(utf8_wordwrap($msg), 997, "\n", true), $headers);
in

Codice: Seleziona tutto

$result = $config['email_function_name']("mymail@mymail.it", mail_encode($subject, ''), wordwrap(utf8_wordwrap($msg), 997, "\n", true), $headers);
e così funziona! :shock:

il problema sembra quindi essere la variabile $to che dovrebbe contenere l'indirizzo email del destinatario.
come posso fare per mostrarla a video e vedere che valore contiene, per capire che problema c'è?

Actze
Utente
Utente
Messaggi: 27
Iscritto il: 17/02/2012, 10:37
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.2.4
Database: MySQL 5.0.96-0ubuntu3

Re: Problema funzione php MAIL() su PHPBB

Messaggio da Actze » 21/01/2014, 12:29

update 2:

sono riuscito a visualizzare il contenuto della variabile $to e contiene:
=?UTF-8?B?QWN0emU=?= <mymail@mymail.it>

il problema sono i caratteri strani prima della mail. ma perchè ci sono? su phpmyadmin ho controllato la tabella users e il campo email contiene gli indirizzi corretti senza questi caratteri strani. L'encoding della tabella è utf8_bin e dovrebbe andare bene.

Actze
Utente
Utente
Messaggi: 27
Iscritto il: 17/02/2012, 10:37
Sesso: Maschio
Versione: 3.0.12
Server: UNIX/Linux
PHP: 5.2.4
Database: MySQL 5.0.96-0ubuntu3

Re: Problema funzione php MAIL() su PHPBB

Messaggio da Actze » 21/01/2014, 18:05

ho risolto il problema con questa funzioncina che toglie i caratteri sporchi e lascia l'indirizzo email

Codice: Seleziona tutto

$to = substr($to, strrpos($to, "<")+1);
$pos2 = strrpos($to, ">");
$to = substr($to, 0, $pos2);
non è una soluzione molto elegante, ma non sapevo cosa altro fare.
Mi piacerebbe capire perchè il forum restituiva questi strani caratteri insieme all'indirizzo email.

Rispondi

Torna a “[3.0.x] Forum di Supporto”

Chi c’è in linea

Visitano il forum: Nessuno e 52 ospiti