ugrás a tartalomhoz

php levélküldés Freewebről

Anonymous · 2005. Okt. 6. (Cs), 06.28
Helló, nagyon sakálhülye problémám van, amit nem tudok megoldani, holott felkínálják a megoldást, de nekem sajna kínai...

"A nálunk regisztrált tárhelyeken a PHP mail() függvénye illetve a Perl CGI-ből történő levélküldés visszaélések megakadályozása miatt korlátozva van.

Azoknak a felhasználóinknak, akik jóhiszeműen szeretnék használni a scriptekből történő levélküldést, továbbra is megtehetik, az alábbiak figyelembevételével:

Bejelentkezés után a "PHP/CGI levélküldés" menüpontban az "azonosító generálása" gombra kattintva aktiválni kell a szolgáltatást. Ha már aktiváltad a szolgáltatást, a gomb helyén az azonosítód jelenik meg.
Naponta (24 óra alatt) maximum 50 levél küldhető el.
Egy e-mail maximum 5 címzettet tartalmazhat összesen, együttvéve a To:, Cc:, Bcc: mezőket.
A levelek header részébe be kell illesztened a következő sort:

X-FW-MailID: azonosító
ahol az azonosító helyére az általunk generált karaktersorozatot kell beírnod.
Példa: PHP esetén a mail() függvény 4. paraméterében (additional headers) tudod megadni, azaz: mail("címzett e-mail címe","levél tárgya","levél szövege","X-FW-MailID: azonosító");"

eddig a freeweb.hu leírása... csakhogy fogalmam sincsen melyik a 4. függvény. gondolom, a file, amiben ez az egész van, az a 'emailer.php' (php-Nuke esetén), és en ebből az adathalmazból sajna nem értek semmit...:
<?php
if (!defined('IN_PHPBB')) {
	die();
}

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]*?' . phpbb_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]*?' . phpbb_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("includes/smtp.php");
                        }

                        $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;
        }

        // 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('#' . phpbb_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

?>
annyi segítségre lenne szükségem, hogy lássam, hová, és hogyan kell beszúrni a fenn mondott sort...

előre is köszönöm: ádám
 
1

<Nincs cím>

Anonymous · 2005. Okt. 6. (Cs), 07.50
Szerintem a legegyszerűbb, bár nem a legszebb ez után hozzácsapni:

"\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\nX-MimeOLE: Produced By phpBB2\n" .
Vagyis kb így:

"\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\nX-MimeOLE: Produced By phpBB2\n" . "\nX-FW-MailID: azonosito" .
2

<Nincs cím>

Anonymous · 2005. Okt. 6. (Cs), 08.25
köszönöm szépen! nem baj, ha nem szép, a lényeg, hogy működjön! :)

ádám
3

<Nincs cím>

cannavaro · 2005. Nov. 29. (K), 20.43
Sziasztok!

Nekem is ilyen problémám van hogy nem tudom mail()-t használni a freeweben.

Nekem ilyen a mail()-em:
<?php mail($email,$lettername,$totalmessage,$mailheaders);
Akkor most szépen bedefiniálm még a headersbe ezt az xn.... valamit?
Valahogy így:
<?php $mailheaders.="\nX-Priority: 3\nX-MSMail-Priority: Normal\nX-Mailer: PHP\nX-MimeOLE: Produced By phpBB2\n" . "\nX-FW-MailID: azonosító";
Vagy máshogy? nem értek hozzá annyira...

Köszi
4

Hasonló gondok...

Anonymous · 2006. Jún. 12. (H), 00.25
Találtam egy leírást a kövi linken és az alapján próbáltam beírkálni ezeket LINK. Sajnos vmi nem stimmel, mert nem kaptam meg az emaileket:(
A emailer.php-m a kövi:

<?php
//
// 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('#[\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]*?' . phpbb_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]*?' . phpbb_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('includes/smtp.' . $phpEx);
                        }

                        $result = smtpmail($to, $this->subject, $this->msg, "X-FW-MailID: 0a1f1e3a1e", $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", "X-FW-MailID: 0a1f1e3a1e", "\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", "X-FW-MailID: 0a1f1e3a1e", "\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;
        }

        // 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('#' . phpbb_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

?>
Sajnos nem tudom, h elrontottam e vmit, mert sajnos annyira nem vok otthon a témában de ezt érdemes lenne megtanulni...
5

rossz helyen

vbence · 2006. Jún. 12. (H), 00.49
Látom a mail sorokat megtaláltad, a 4. paraméert viszont nagyon nem...

Az smtpmail -t tartamazó sor átírása föösleges, az smtp küldés úgysem fog működni.

A mail sorában rossz helyre írtad az azonosítót. Sajnos msot biztosan jó sort nem tudok neked küldeni, mert nem látom az eredeti állapotot, de gyanítom ez lenne az:

                                $result = @mail($to, $this->subject, preg_replace("#(?<!\r)\n#s", "\n", $this->msg), $this->extra_headers . "\nX-FW-MailID: 0a1f1e3a1e");
Ha átmenetileg leszeded az AT karaktert (igen, a kukacot) a mail elől, akkor láthatod a hibaüzeneteket. Beállítás közben így könnyebb dolgod lesz.
6

Próba1

Anonymous · 2006. Jún. 12. (H), 01.52
Átírtam, amit mondtál és próbáltam AT nélkül is de nem kaptam hibaüzit csak annyit, amit eddig, h sikeresen elküldve, de még nem kaptam semmit... Majd előszedem az eredetit és felrakom. Addig is köszi!
8

eredeti code

Anonymous · 2006. Jún. 15. (Cs), 22.57
Íme az eredeti, amit átírtam:

<?php
/***************************************************************************
                                emailer.php
                             -------------------
    begin                : Sunday Aug. 12, 2001
    copyright            : (C) 2001 The phpBB Group
    email                : support##kukac##phpbb.com

    $Id: emailer.php,v 1.15.2.29 2003/06/15 12:08:20 acydburn Exp $

***************************************************************************/
/***************************************************************************
* phpbb2 forums port version 2.0.5 (c) 2003 - Nuke Cops (http://nukecops.com)
*
* Ported by Nuke Cops to phpbb2 standalone 2.0.5 Test
* and debugging completed by the Elite Nukers and site members.
*
* You run this package at your sole risk. Nuke Cops and affiliates cannot
* be held liable if anything goes wrong. You are advised to test this
* package on a development system. Backup everything before implementing
* in a production environment. If something goes wrong, you can always
* backout and restore your backups.
*
* Installing and running this also means you agree to the terms of the AUP
* found at Nuke Cops.
*
* This is version 2.0.5 of the phpbb2 forum port for PHP-Nuke. Work is based
* on Tom Nitzschner's forum port version 2.0.6. Tom's 2.0.6 port was based
* on the phpbb2 standalone version 2.0.3. Our version 2.0.5 from Nuke Cops is
* now reflecting phpbb2 standalone 2.0.5 that fixes some bugs and the
* invalid_session error message.
***************************************************************************/
/***************************************************************************
 *   This file is part of the phpBB2 port to Nuke 6.0 (c) copyright 2002
 *   by Tom Nitzschner (tom##kukac##toms-home.com)
 *   http://bbtonuke.sourceforge.net (or http://www.toms-home.com)
 *
 *   As always, make a backup before messing with anything. All code
 *   release by me is considered sample code only. It may be fully
 *   functual, but you use it at your own risk, if you break it,
 *   you get to fix it too. No waranty is given or implied.
 *
 *   Please post all questions/request about this port on http://bbtonuke.sourceforge.net first,
 *   then on my site. All original header code and copyright messages will be maintained
 *   to give credit where credit is due. If you modify this, the only requirement is
 *   that you also maintain all original copyright messages. All my work is released
 *   under the GNU GENERAL PUBLIC LICENSE. Please see the README for more information.
 *
 ***************************************************************************/
/***************************************************************************
 *
 *   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('#[\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]*?' . phpbb_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]*?' . phpbb_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('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;
        }

        // 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('#' . phpbb_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

?>
Előre is köszi!
Rusty
7

mail() FreeWeben

s_volenszki · 2006. Jún. 15. (Cs), 10.26
Bocsi, de én nemmászok bele a kódodba, de azt bizton állíthatom, hogy a fw-en én is elég sokat gyötrődtem mire megszültem a helyes megoldást! Jelen tudásom szerint, text/html levelet lehet küldeni (nekem nem müködött az inline objektum hozzáadása), követeli a header-ben a x-FW-MailID-t, és nem engedi az extra headers-t!

Többnyire kapcsolatfelvételre kérnek ilyen rutint (ne az Outlook ugráljon, ha valaki üzenetet akar küldeni), én már régóta használom ezt:

$to .= "email##kukac##cim.hu"; 
$subject = "E-mail mail()-el."; 
$headers .= "From: Én vagyok a feladó <felado##kukac##emailcim.hu>\n"; 
$headers .= "Content-Type: text/html; charset=iso-8859-1\n"; 
$headers .= "X-FW-MailID: 309db6aa5f\n";
$message = " <p>Ide jöhet a <b>szöveg</b>, és más html tartalom, akár egy komplett html oldal!</p>

mail($to, $subject, $message, $headers);
s_volenszki
9

hááát

Anonymous · 2006. Jún. 15. (Cs), 23.00
A gond csak az,h ez php-nuke és én nem értek annyira php-hez hogy átírjam a php-nuke ezen részét vagy ezt hogyan írjam bele... Azért köszi!
Rusty
10

FreeWeb

s_volenszki · 2006. Jún. 16. (P), 13.16
Akkor lehet hogy kellene választanod egy tárhelyet!

FW => Minimális szolgáltatás => Tudás
Fizetős tárhely => Maximális szolgáltatás => Minimális tudás

s_volenszki
11

választottam

Anonymous · 2006. Jún. 18. (V), 21.19
fw-t, ott nem sikerült helyesen beállítanom! Ehhez kértem segítséget, mint az előttem lévők és ezért mésoltam be az eredeti kódot. Hibaüzit meg nem kapok, így nem tudok min elindulni

Rusty
12

freeweb

Anonymous · 2006. Júl. 20. (Cs), 18.35
Miért is használ valaki freewebet mikor néhány ezer forintért rendes tárhelyet lehet használni minden funkcióval????