---
title: "Problem med mailformulär"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/112311-problem-med-mailformulär"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "addeweb"
published: "2004-09-24T12:45:02.000Z"
updated: "2004-10-09T07:34:27.000Z"
replies: 32
views: 796
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/112311-problem-med-mailformulär"
---

# Problem med mailformulär

_Sida 1 av 2._

## #1 — addeweb, 2004-09-24T12:45Z

Jag har fått ett problem med ett mailformulär. 
Felmeddelandet som jag har fått efter att ha 
tryckt på submitknappen i formuläret på sidan
kontakt.php: 
**Fatal error: Call to undefined function: 
send() in C:\\Ex-jobb\\teqla\\kontakt\\send_mail.php on line 71** 
Det gäller sista raden i koden nedan. Jag har
Mail-classen includerad också. Funktionen send() 
finns med i den filen. Vad är det som jag har missat??

```php
<?php

 include("Mail.php");
 
$toMail = $_POST['toMail'];
$fromMail = $_POST['fromMail'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$fil = $_POST['fil'];

$recipients = $toMail;

$headers["From"]    = $fromMail;

$headers["To"]      = $toMail;

$headers["Subject"] = $subject;

$headers["fil"] = $fil;

$body = $message;

$mail_params = array(
         "host"      => "din.smtp-server.nu",
         "port"      => 25,
          "auth"      => true,
         "username"  => "user",
         "password"  => "losen"
      );

$mail =& Mail::factory("smtp", $mail_params);
$mail->send($recipients, $headers, $body);

?>
```

Permalänk: https://www.webforum.nu/p/112311

## #2 — addeweb, 2004-09-24T13:34Z

Om det inte skulle gå att använda mail-classen i koden, vad gör jag då istället? I vilket fall som helst måste jag använda användarnamn och lösenord i koden för att få tillgång till en smtp-server.

Permalänk: https://www.webforum.nu/p/1444499

## #3 — lunne82, 2004-09-24T13:55Z

Är funktionen send() definierad i klassen?

Permalänk: https://www.webforum.nu/p/1444513

## #4 — addeweb, 2004-09-24T13:56Z

Jag har sett att funktionen finns med i klassen.
Här är send-funktionen:

```php
 <?php
  function send($recipients, $headers, $body)
    {
        // if we're passed an array of recipients, implode it.
        if (is_array($recipients)) {
            $recipients = implode(', ', $recipients);
        }

        // get the Subject out of the headers array so that we can
        // pass it as a seperate argument to mail().
        $subject = '';
        if (isset($headers['Subject'])) {
            $subject = $headers['Subject'];
            unset($headers['Subject']);
        }

        // flatten the headers out.
        list(,$text_headers) = Mail::prepareHeaders($headers);

        return mail($recipients, $subject, $body, $text_headers);

    }
?>
```

Permalänk: https://www.webforum.nu/p/1444514

## #5 — kjell, 2004-09-24T14:05Z

Kan du byta ut 

```php
include("Mail.php");
```

 mot 

```php
require 'Mail.php';
```

 så man säkert vet att funktionen finns tillgänglig.

Permalänk: https://www.webforum.nu/p/1444516

## #6 — silfver, 2004-09-24T14:11Z

```php
Mail.php
```

Tänk på det där med liten och stor bokstav också. Det måste på de flesta servrar stämma överens.

Permalänk: https://www.webforum.nu/p/1444517

## #7 — addeweb, 2004-09-24T15:18Z

Jag har bytt till require('Mail.php'); men fortfarande funkar det inte.

Permalänk: https://www.webforum.nu/p/1444554

## #8 — kjell, 2004-09-24T15:40Z

Ok, antar att det är samma felmeddelande och då hittar vi uppenbarligen Mail.php

Funktionen hittas dock inte och det måste ju bero på något. Kan det vara så att du använder PHP5 och classen inte är definerad och därav inte får tag i funktionen?
Vad händer om du infogar funktionen direkt i skriptet, exempelvis på raden före avslutande ?\>

Permalänk: https://www.webforum.nu/p/1444562

## #9 — addeweb, 2004-09-24T16:30Z

Har tidigare kollat vilken version som gällde med hjälp av phpinfo.php. Det var inte PHP5 men jag ska lägga in funktionen direkt i skriptet och se om det funkar under helgen. Återkommer om det skulle bli något nytt problem.

Permalänk: https://www.webforum.nu/p/1444588

## #10 — addeweb, 2004-09-26T15:16Z

Har provat med att lägga in funktionen i själva skriptet men ändå funkar det inte med samma resultat.  Har även kollat postvariablerna som är ok. Jag vet fortfarande inte vad som är fel.

Permalänk: https://www.webforum.nu/p/1445217

## #11 — lunne82, 2004-09-26T19:07Z

Är nog enklare att säga vad som är fel om man får se koden i Mail.php

Permalänk: https://www.webforum.nu/p/1445287

## #12 — tronez, 2004-09-26T19:44Z

Det är nog inte fel på den koden, Mail.php, jag förmodar att det är PEAR mailclass som används? Om inga ändringar gjorts där så ska det ju inte vara nåt fel på den

Permalänk: https://www.webforum.nu/p/1445303

## #13 — addeweb, 2004-09-27T08:00Z

I filen Mail.php finns raden require_once 'PEAR.php'; vilket innebär att denna fil ska finnas i samma katalog som Mail.php. Det finns en annan sak som finns med i Mail-filen: include_once 'Mail/RFC822.php';. Tydligen ska jag också ha med Mail-katalogen som innehåller RFC822-filen plus andra filer. Jag får pröva om det funkar.

Permalänk: https://www.webforum.nu/p/1448334

## #14 — addeweb, 2004-09-27T13:06Z

När jag nu har lagt in Mail-katalogen,  fick jag istället ett annat felmeddelande med andra problem:
**Warning: send(Net/SMTP.php): failed to open stream: No such file or directory in C:\\kontakt\\Mail\\smtp.php on line 148

Warning: send(): Failed opening 'Net/SMTP.php' for inclusion (include_path='.;c:\\php4\\pear') in C:\\kontakt\\Mail\\smtp.php on line 148

Fatal error: Cannot instantiate non-existent class: net_smtp in C:\\kontakt\\Mail\\smtp.php on line 150**

Jag har kollat i smtp-filen och konstaterat att man ska fylla i vilken smtp-server, användarnamn och lösenord där det krävs. Men den kod som jag har lagt in i första inlägget och som också innehåller smtp-server, användarnamn och lösenord? Nu vet jag varken ut eller in vad jag ska göra.

Permalänk: https://www.webforum.nu/p/1448506

## #15 — addeweb, 2004-09-27T21:22Z

Finns det någon som kan hjälpa mig??

Permalänk: https://www.webforum.nu/p/1448699

## #16 — lunne82, 2004-09-27T21:39Z

Tja, det står ju där att sökvägen inte är korrekt. Kolla på rad 148 i smtp.php och jämför det med den riktiga sökvägen till filen.

Permalänk: https://www.webforum.nu/p/1448704

## #17 — addeweb, 2004-09-27T22:22Z

Rad 148 gäller **include_once 'Net/SMTP.php';**
Ska man också ha den filen med? Jag har inte kunnat hitta en sådan fil på samma ställe som de andra klasserna.

smtp.php:

```php
function send($recipients, $headers, $body)
    {
        include_once 'Net/SMTP.php';

        if (!($smtp = &new Net_SMTP($this->host, $this->port, $this->localhost))) {
            return PEAR::raiseError('unable to instantiate Net_SMTP object');
        }

        if ($this->debug) {
            $smtp->setDebug(true);
        }

        if (PEAR::isError($smtp->connect())) {
            return PEAR::raiseError('unable to connect to smtp server ' .
                                    $this->host . ':' . $this->port);
        }

        if ($this->auth) {
            $method = is_string($this->auth) ? $this->auth : '';

            if (PEAR::isError($smtp->auth($this->username, $this->password,
                              $method))) {
                return PEAR::raiseError('unable to authenticate to smtp server');
            }
        }

        $headerElements = $this->prepareHeaders($headers);
        if (PEAR::isError($headerElements)) {
            return $headerElements;
        }
        list($from, $text_headers) = $headerElements;

        /* Since few MTAs are going to allow this header to be forged
         * unless it's in the MAIL FROM: exchange, we'll use
         * Return-Path instead of From: if it's set. */
        if (!empty($headers['Return-Path'])) {
            $from = $headers['Return-Path'];
        }

        if (!isset($from)) {
            return PEAR::raiseError('No from address given');
        }

        $args['verp'] = $this->verp;
        if (PEAR::isError($smtp->mailFrom($from, $args))) {
            return PEAR::raiseError('unable to set sender to [' . $from . ']');
        }

        $recipients = $this->parseRecipients($recipients);
        if (PEAR::isError($recipients)) {
            return $recipients;
        }

        foreach ($recipients as $recipient) {
            if (PEAR::isError($res = $smtp->rcptTo($recipient))) {
                return PEAR::raiseError('unable to add recipient [' .
                                        $recipient . ']: ' . $res->getMessage());
            }
        }

        if (PEAR::isError($smtp->data($text_headers . "\r\n" . $body))) {
            return PEAR::raiseError('unable to send data');
        }

        $smtp->disconnect();
        return true;
    }

}
```

Permalänk: https://www.webforum.nu/p/1448715

## #18 — lunne82, 2004-09-28T10:33Z

Trial and error...

Permalänk: https://www.webforum.nu/p/1448856

## #19 — addeweb, 2004-09-28T11:44Z

Jag begriper inte vad han menar...

Permalänk: https://www.webforum.nu/p/1448892

## #20 — Pedda, 2004-09-28T15:11Z

> **addeweb skrev:**
>
> Rad 148 gäller include_once 'Net/SMTP.php';

Det innebär ju att du ska ha en mapp som heter Net med en fil i som heter SMTP.php
Har du inte det? Om du inte har det så verkar det ju inte vara ett komplett skript som du har fått tag i.

Permalänk: https://www.webforum.nu/p/1449014

---

Tråden på webben: https://www.webforum.nu/amne/php/112311-problem-med-mailformulär  
Nästa sida: https://www.webforum.nu/amne/php/112311-problem-med-mailformulär/page2.md
