---
title: "problem med mailformulär"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/100951-problem-med-mailformulär"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Rickard"
published: "2004-04-05T16:27:07.000Z"
updated: "2004-04-07T12:37:18.000Z"
replies: 36
views: 861
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/100951-problem-med-mailformulär"
---

# problem med mailformulär

_Sida 1 av 2._

## #1 — Rickard, 2004-04-05T16:27Z

Halloj!

Sitter å försöker pilla på ett mailformulär som kan skicka mail till fler än en mailadress.
Hittade ett script av pedda i scriptarkivet och började pilla där i.

Problemet är nu bara att jag vill försöka via en databas att hämta inlaggda mailadresser där ifrån och få dom att stå i fältet "Din adress"

```
$thanks = "mail.php?func=ThanksMessage&namn=$namn";        // url to thankspage
[B]$yourmail = [email]mail@mail.mail[/email] ; [/B]       // Your mailadress
$credit = 0;        // 1 = give me credit for the script, 0 = no credit :(
$showcc = 0;        // 1 = show the cc field, 0 = don't show it
$showbcc = 0;        // 1 = show the bcc field, 0 = don't show it
```

Detta försöker jag åstadkomma med en tämligen simpel kod:

```
<?
$lank = mysql_connect ("localhost","user","pass");
mysql_select_db ("newsletter");
// Hämta rader och skriv ut
$sql = "SELECT * FROM maildatabase ORDER BY id ASC";
$result = mysql_query($sql);
while($rad = mysql_fetch_array($result)) {
?>
<?=$rad["mail"]?> ,
<?
}
?>
```

Vad jag undrar är hur jag kan få svaret från det scriptet att hamna i $yourmail i mailformuläret.
Har någon en aning om hur jag skall gå tillväga?
Svaret från maildatabase.php kan skådas på följande adress:
<http://82.182.89.126/~noratx/newsletter/maildatabase.php>

hoppas någon vet hur jag skall gå tillväga. =)

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

## #2 — Pedda, 2004-04-05T16:53Z

För att skicka meddelandet till flera så brukar man använda:

```php
$yourmail = "mail1@domän.com" . ", " ; // notera kommatecknet på första posten!
$yourmail .= "mail2@domän.com";
```

Hur man löser det mot en databas orkar jag inte lista ut nu, men det kanske är en liten hjälp på vägen. ;)

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

## #3 — Rickard, 2004-04-05T22:24Z

heh, jadu. Nu är det ju så att jag tänkte använda det ungefär som ett nyhetsbrev.
Å då blir det aningens jobbigt att gå in i phpfilen varje gång man skall lägga till en mailadress..  
Därav databasen...
Men jag tror att jag har lösningen på tungan..  =)

edit:
Det var jag inte als.
Så förslag mottages med glädje. =)

Vad jag försökte göra var att lägga in databas scriptet helt enkelt i mail.php i dom här krokarna:

```
function Send() {
global $bgcolor, $textcolor, $tablecolor, $border, $bordercolor, $namn, $epost, $meddelande, $subject, $yourmail, $thanks, $from, $email, $back, $errorname, $errormail, $errormessage, $ccmail, $bccmail, $sendermessage;
$date = "".date("Y-m-d (H:i)")." - IP: ".$_SERVER["REMOTE_ADDR"] ."\n";
$header .= "From: \"".addslashes($namn)."\" <".$epost.">\r\n";
$header .= "Reply-To: <".$epost.">\n";
$headers .= "To:  <".$yourmail.">\r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: text/html; charset=iso-8859-1\n";
$header .= "X-Sender: <".$yourmail.">\n";
$header .= "X-Mailer: PHP4\n";
$header .= "X-Priority: 3\n"; //1 UrgentMessage, 3 Normal
$header .= "Return-Path: <".$epost.">\n";
$header .= "Cc: ".$ccmail."\r\n";
$header .= "Bcc: ".$bccmail."\r\n";
```

Genom att ändra:
$headers .= "To:  \<".$yourmail."\>\\r\\n";
till
$headers .= "To:  \<".$rad=\["mail"\]."\>\\r\\n";
Men det gick inget vidare, det fick jag parse error på.

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

## #4 — Melea, 2004-04-06T06:04Z

Såhär hade jag gjort

```php
$lank = mysql_connect ("localhost","user","pass");
mysql_select_db ("newsletter");
// Hämta rader och skriv ut
$sql = "SELECT * FROM maildatabase ORDER BY id ASC";
$result = mysql_query($sql);
while($rad = mysql_fetch_array($result)) {
	$message = "<html>
	<head>
	</head>
	<body>Textarea formuläret här, allt text dvs.</body>
	</html>";

	$headers  = "MIME-Version: 1.0\r\n";
	$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

	$avsandare = $rad['mail'];
	$headers .= "From: [email]dinmail@dinmail.se[/email]\r\n";
	$headers .= "Reply-To: $avsandare;

	mail($avsandare, "rubriken i mailet", $message, $headers);
}
```

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

## #5 — Rickard, 2004-04-06T09:16Z

Jag förstår inte riktigt vad jag skulle uppnå med det, jag är inte så jättebra på PHP, så jag ser inte direkt något samband med mina frågor i ditt svar malea.

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

## #6 — Melea, 2004-04-06T09:39Z

Kolla min redigering.

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

## #7 — Rickard, 2004-04-06T12:33Z

Melea: hmm..  ok, det SER ju rätt ut iallafall..
Men har du tittat i peddas script?
För jag hittar inte vart jag skall lägga in det där...
Något textarea formulär finns inte just där eftersom det där bara är headers typ...
Det är inte meningen att man skall fylla i mailadresser för han öht. i det scriptet då det till en början är ett feedback formulär för att skicka till en enda mailadress.

Det funkar dock om man i " $yourmail = <mail@mail.mail> ; "
skriver ex: " $yourmail = <mail1@mail.se> , <mail2@mail.se> , <mail3@mail.se> ; " osv osv.. allt separerat med ett komma och blanksteg.

Därav att maildatabase.php lägger upp just mailadresserna från databasen på just det viset.

Så det jag egentligen vill uppnå ät att $yourmail hämtar sitt värde från $rad\["mail"\] i maildatabse.php

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

## #8 — Rickard, 2004-04-06T13:02Z

Jag försökte med den här varianten:

```
$thanks = "mail.php?func=ThanksMessage&namn=$namn";        // url to thankspage ([url]http://www.yourdomain.com/thanks.php[/url]), or mail.php?func=ThanksMessage&namn=$namn for standard message.
$lank = mysql_connect ("localhost","user","pass");
mysql_select_db ("newsletter");
// Hämta rader och skriv ut
$sql = "SELECT * FROM maildatabase ORDER BY id ASC";
$result = mysql_query($sql);
while($rad = mysql_fetch_array($result)) {

$yourmail = "$rad['mail']";        // Your mailadress
}
```

Men då fick jag detta felet

Parse error: parse error, expecting \`T_STRING' or \`T_VARIABLE' or \`T_NUM_STRING' in /home/noratx/public_html/newsletter/mail.php on line 30

Line30 = $yourmail = "$rad\['mail'\]";        // Your mailadress

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

## #9 — Rickard, 2004-04-06T13:10Z

Ok..  jag fick det att funka nu...  
tog bort " " framför och bakom "$rad\['mail'\]"; så funkade det.

Nu fick jag dock ytterligare ett problem...

Warning: Cannot add header information - headers already sent by (output started at /home/noratx/public_html/newsletter/mail.php:2) in /home/noratx/public_html/newsletter/mail.php on line 147

Lite kod för att kunna felsöka:

```
} else if (eregi("^[a-z0-9]+([_\.-][a-z0-9]+)*@([a-z0-9]+([.-][a-z0-9]+)*)+\.[a-z]{2,}$", $epost)) {
        // Send the mail
        mail ($yourmail, $subject, $totmessage, $header);
        header("Location: $thanks");
        } else {
                include("jams_header.php");
                echo "$errormail<br><br><a href=\"javascript:history.back()\">$back</a>";
                include("jams_footer.php");
        }
}
```

Line 147 är som ni säkert förstår:
header("Location: $thanks");

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

## #10 — Insider, 2004-04-06T13:21Z

Skriv ut tackmeddelandet på samma sida istället för på $thanks - sidan.
Du kontroller om mailet har blivit skickat och då skriver du ut ett meddelande.

Jag tror den lösningen är enklast.
Det kan hända att det inte funkar att använda 'header' direkt efter mail()...

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

## #11 — Rickard, 2004-04-06T13:23Z

Ok.
Det skumma är att det funkade innan jag la till databasfunktionen.

Nu tampas jag dock med ett lite annat problem som uppkom i samband.
Den hämtar alla mailadresser, MEN, den lägger dom efter varandra utan något kommatecken...
dvs:
<mail1@mail.sema>il2@mail.semail3@mail.se
istället för:
<mail1@mail.se> , <mail2@mail.se> , <mail3@mail.se>

Koden ser ut som såhär:
$lank = mysql_connect ("localhost","user","pass");
mysql_select_db ("newsletter");
// Hämta rader och skriv ut
$sql = "SELECT \* FROM maildatabase ORDER BY id ASC";
$result = mysql_query($sql);
while($rad = mysql_fetch_array($result)) {

$yourmail = $rad\['mail'\]         // Your mailadress
}

Jag försökte också lägga till ett fält i databasen för att få dit kommat
$marker = $rad\['komma'\]
la jag efter $yourmail
men då får jag parse error på den raden.

I det fältet i databasen ligger " . " ett blanksteg, ett komma och ytterligare ett blanksteg.

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

## #12 — Insider, 2004-04-06T13:43Z

Istället för att skicka samma mail till flera avsändare, så kan du ju skicka ett mail till varje avsändare, som i Melea's exempel ovan.

Du skickar alltså mailet i loopen.
Det blir ju sak samma och så slipper du strula med dina kommatecken.

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

## #13 — Rickard, 2004-04-06T13:46Z

Mjo, jag vet dock bara inte hur jag skall lösa den funktionen så som meala har beskrivit det.
Som sagt, jag är inte direkt jättebra på PHP

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

## #14 — Melea, 2004-04-06T14:20Z

Okej, ska försöka förklara mig bättre :)

Om du gör ett formulär, typ detta:

```
<form action="[b]skicka_massmail.php[/b]" method="post">
<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
<td width="100"><b>Rubrik</b></td>
<td><input type="text" name="rubrik" size="30"></td>
</tr>
<tr>
<td>& nbsp;</td>
<td><textarea name="meddelande" cols="50" rows="14"></textarea></td>
</tr>
<tr>
<td>& nbsp;</td>
<td><input type="submit" value="Kontakta alla" ></td>
</tr>
</table>
```

Och sen lägger in min kod i filen **skicka_massmail.php**:

```php
<?
$lank = mysql_connect ("localhost","user","pass");
mysql_select_db ("newsletter");
// Hämta rader och skriv ut
$sql = "SELECT * FROM maildatabase ORDER BY id ASC";
$result = mysql_query($sql);
while($rad = mysql_fetch_array($result)) {
    $message = "<html>
    <head>
    </head>
    <body>nl2br($_POST[meddelande])</body>
    </html>";

    $headers  = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

    $avsandare = "din@email.se";
    $headers .= "From: $avsandare";
    $headers .= "Reply-To: $avsandare;

    mail($rad[mail], $_POST[rubrik], $message, $headers);
}
?>
```

Så borde det fungera...

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

## #15 — Insider, 2004-04-06T14:25Z

```php
function send($mejl) {
//massa kod
$headers .= "To:  <".$mejl.">\r\n";
//Mera kod
}

while($rad = mysql_fetch_array($result)) {
$yourmail = $rad['mail'] // Your mailadress
send($yourmail);
}
```

Förstår du principen?

/Red -\> Nu gjorde han på ett annat sätt. Men det funkar lika bra.

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

## #16 — Rickard, 2004-04-06T14:54Z

Sorry, såg inte als att melea hade skrivit ett nytt, skall försöka med det så skall vi se vad det leder till.  =)

edit igen då så slipper jag posta ett nytt inlägg...

Det där funkade klockrent, nu skall jag bara försöka bygga ut det med liknande funktioner som tidigare script, samt även skickas iväg till en header location...

Dock vart något lite skumt...  

    $message = "\<html\>
    \<head\>
    \</head\>
    \<body\>nl2br($\_POST\[meddelande\])\</body\>
    \</html\>";

Den skickar med "nl2br" i klartext i meddelandet, hur löser man det så den gör vad den skall å inte skickas i klartext? =)

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

## #17 — Rickard, 2004-04-06T16:16Z

Ytterligare en fundering...

Jag tänkte även ta å spara samtliga utskick i en databas...
Hur glr jag för att få den att spara i en databas när jag klickar på skicka knappen?

Kod för att spara kan jag knåpa ihop själv tror jag, frågan är bara hur jag får den att spara allt efter att den skickat mailet..  =)

en liten edit här med då:  =)

```
$lank = mysql_connect ("localhost","user","pass");
$databas = mysql_select_db("newsletter");
$sql="INSERT INTO saved_letters(date-time,subject,mail,message)
VALUES('$date-time','$subject','$mail','$message')";
mysql_query("$sql");
mysql_close ($lank);
```

Kan jag klistra in den koden längst ner så det sparas lite sådär automagiskt, eller behöver jag göra en separat funktion för det?
Och i så fall, hur gör jag den funktionen? =)

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

## #18 — Rickard, 2004-04-06T20:58Z

Halloj...
Nu börjar jag få ordning på allt så som jag vill ha det.. utom en sak.
Som tidigare nämnde jag ju att jag vills epara alla mail som skickats i en databas, å det har jag lyckats med, så när som på en sak...

Mottagarnas mailadresser vill inte sparas.

Jag har tittat å tittat å försökt och försökt, utan att lyckas.
Lade till en ny variabel för mail för att testa, men inte tusan funkade det heller...

Jag bifogar större delen av koden så kanske någon kan se vad felet är... hoppas jag iaf.. för nu börjar jag snart bli tokig..  =)

```
$lank = mysql_connect ("localhost","user","pass");
mysql_select_db ("newsletter");
// Hämta rader och skriv ut
$sql = "SELECT * FROM maildatabase ORDER BY id ASC";
$result = mysql_query($sql);
while($rad = mysql_fetch_array($result)) {
    $message = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n
<HTML><BODY bgcolor=\"$bgcolor\"><table width=\"80%\" bgcolor=\"$tablecolor\" text=\"$textcolor\" border=\"$border\" bordercolor=\"$bordercolor\" align=\"center\" cellpadding=\"60\" cellspacing=\"0\"><tr><td>\n
$_POST[meddelande]
</td></tr></table></BODY></HTML>\n";

    header("Location: $thanks");

    $headers  = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

    $avsandare = "do_not_answear@mail.se";
    $headers .= "From: $avsandare";

    mail($rad[mail], $_POST[rubrik], $message, $headers);

}

$mail2 = $rad["mail"];
$datum = date("Y-m-d H:i:s");
$lank2 = mysql_connect ("localhost","user","pass");
$databas2 = mysql_select_db("newsletter");
$sql2="INSERT INTO saved_letters(datum,rubrik,mail,message)
VALUES('$datum','$rubrik','$mail2','$message')";
mysql_query("$sql2");
mysql_close ($lank2);

?>
```

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

## #19 — Pedda, 2004-04-06T21:11Z

Eftersom du loopar mailen så måste du även ha sql satsen där du lägger in i databasen i loopen.
Annars så loopar du ut mailen, och sedan försöker du lägga in i databasen.

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

## #20 — Rickard, 2004-04-06T21:18Z

Ok, men är inte då risken att den sparar allt lika många gånger som mailadresser då?
Eftersom scriptet just nu skickar samma mail flera gånger?

edit:
Har du lust å bra knåpa ihop hur tusan jag skall lösa det?
För så som jag trode att man löste det genom att loopa fram mail igen gick tydligen inte als..

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

---

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