Avatar billede ferrari_brian Nybegynder
06. maj 2003 - 18:50 Der er 14 kommentarer og
1 løsning

send mail

Hej ... jeg har følgende til at sende mail med over PHP, jeg ville bare gerne have den udvidet så jeg kunne sende til flere på en liste? listen ligger i en .txt-fil og der står en mailadresse på hver linie. der skal vel en variabel mere ind istedet for der hvor jeg har skrevet "flere@mail.adresser" og den skal så hentes fra filen... hvordan gør jeg det? eller er der en anden måde?         

  <H1>send mail</H1>
        <form action="mail.php" method="post">
        Emne:<br>
            <input type="text" name="subject" size="30"><br>
        Indhold:<br>
        <textarea name="content" cols="30" rows="5">Slet denne tekst og skriv her hvad du har at skrive...</textarea><p>
          <input type="submit" value="Send"></p>
                 



            <?php

$adminmail = "admin@mail.dk";

        $subject = $_REQUEST["subject"];
        $content = $_REQUEST["content"];
        mail("flere@mail.adresser",
              "$subject",
            "$content",
            "From: $adminmail\r\n"
            ."X-mailer: PHP/" . phpversion());
            echo "Mail er sendt, vi vil vende tilbage snarest muligt.";
            ?>
Avatar billede tipsen Nybegynder
06. maj 2003 - 19:35 #1
<?php
if(!isset($_POST['submit'])) {
?>
<H1>send mail</H1>
<form action="mail.php" method="post">
Emne:<br><input type="text" name="subject" size="30"><br>
Indhold:<br><textarea name="content" cols="30" rows="5">Slet denne tekst og skriv her hvad du har at skrive...</textarea><br>
<input type="submit" value="Send">
} else {                 
  $adminmail = 'admin@mail.dk';
  $subject = $_POST['subject'];
  $content = $_POST['content'];
  $header = "From: $adminmail\r\nX-mailer: PHP/" . phpversion());

  $emails = file('navnpåfil.txt');
  foreach($emails as $email) {
    mail($email, $subject, $content, $header);
  }
  unset($emails);
  echo 'Mail er sendt, vi vil vende tilbage snarest muligt.';
}
?>
Avatar billede ferrari_brian Nybegynder
06. maj 2003 - 19:37 #2
tak jeg tester det lige engang... vender lige tilbage...
Avatar billede tipsen Nybegynder
06. maj 2003 - 19:37 #3
Det er en metode som kun bør bruges op til ca. 50 mails, da den belaster mailserveren unødvendigt hårdt! Ved flere mails bør du i stedet koble direkte op til smtp-serveren vha. fsockopen() og kommunikere direkte - lidt mere avanceret men *meget* bedre for serveren!
Avatar billede ferrari_brian Nybegynder
06. maj 2003 - 19:55 #4
okay... jeg skal lige have det til at virke først... den giver lidt fejl... jeg poster koden når jeg har fået den til at virke... det skal heller ikke bruges til flere... det skal faktisk kun bruges i en kort periode... for der skulle gerne komme MySQL på senere... :-)
Avatar billede tipsen Nybegynder
06. maj 2003 - 20:01 #5
*UPS*

udover filnavnet skal denne linie også rettes:

<input type="submit" name="submit" value="Send">
Avatar billede tipsen Nybegynder
06. maj 2003 - 20:05 #6
Ellers vil den bare vise formen hele tiden...
Avatar billede ferrari_brian Nybegynder
06. maj 2003 - 20:06 #7
Efter jeg har rettet koden til dette melder den ikke længere fejl når jeg åbner siden, men den vil ikke sende noget... vil det virke bedre hvis det bliver post'et til en anden fil så formen fx er i sendmail.php og koderne er i send.php?

<?php
if(!isset($_POST['submit'])) {
?>
<H1>send mail</H1>
<form action="send.php" method="post">
Emne:<br><input type="text" name="emne" size="30"><br>
Besked:<br><textarea name="besked" cols="30" rows="5">Slet denne tekst og skriv her hvad du har at skrive...</textarea><br>
<input type="submit" value="Send">
<?
} else {                 
  $adminmail = 'admin@mail.dk';
  $subject = $_POST['emne'];
  $content = $_POST['besked'];
  $header = "From: $adminmail\r\n"
  ."X-mailer: PHP/" . phpversion();

  $emails = file('emails.txt');
  foreach($emails as $email) {
    mail($email, $subject, $content, $header);
  }
  unset($emails);
  echo 'Mail er sendt, vi vil vende tilbage snarest muligt.';
}
?>
Avatar billede ferrari_brian Nybegynder
06. maj 2003 - 20:41 #8
Jeg har lige delt den op i 2 filer som jeg skrev tidligere ... så den der hedder send.php indeholder dette:

<?php
if(!isset($_POST['submit'])) {

                 
  $adminmail = 'bs@tdcspace.dk';
  $subject = $_POST['emne'];
  $content = $_POST['besked'];
  $header = "From: $adminmail\r\n"
  ."X-mailer: PHP/" . phpversion();

  $emails = file('emails.txt');
  foreach($emails as $email) {
    mail($email, $subject, $content, $header);
  }
  unset($emails);
  echo 'Mail er sendt, vi vil vende tilbage snarest muligt.';
}
?>

der er fjernet et } else { og så er den selvfølgelig delt og så skulle det virke... :-)
Avatar billede tipsen Nybegynder
06. maj 2003 - 21:17 #9
Du har lavet et mærkeligt miks uden den rettelse jeg skrev - rigtig kode:

<?php
if(!isset($_POST['submit'])) {
?>
<H1>send mail</H1>
<form action="mail.php" method="post">
Emne:<br><input type="text" name="subject" size="30"><br>
Indhold:<br><textarea name="content" cols="30" rows="5">Slet denne tekst og skriv her hvad du har at skrive...</textarea><br>
<input type="submit" name="submit" value="Send">
} else {                 
  $adminmail = 'admin@mail.dk';
  $subject = $_POST['subject'];
  $content = $_POST['content'];
  $header = "From: $adminmail\r\nX-mailer: PHP/" . phpversion());
  $emails = file('navnpåfil.txt');
  foreach($emails as $email) {
    mail($email, $subject, $content, $header);
  }
  unset($emails);
  echo 'Mail er sendt, vi vil vende tilbage snarest muligt.';
}
?>
Avatar billede ferrari_brian Nybegynder
06. maj 2003 - 21:31 #10
jeg ved ikke med dig, men der kommer en parse error med den der kode... og du afslutter også php uden at åbne den igen... (lige før formen... )

mit virker underligt nok... jeg har omdøbt subject og content, og så har jeg flyttet "X-mailer: PHP/" . phpversion());" jeg mener ikke at det det skal stå sådan... for det passer ikke særlig godt ind... og min send_mail.php ser således ud:

<H1>send mail</H1>
<form action="send.php" method="post">
Emne:<br><input type="text" name="emne" size="30"><br>
Besked:<br><textarea name="besked" cols="30" rows="5"></textarea><br>
<input type="submit" value="Send">

men det kunne rigtig nok sidde inde imellem det som du har gjort, og det kommer det nok også til når jeg lige får det lavet... (lidt senere) men så skal det være ren PHP og ikke en afbrudt php
Avatar billede tipsen Nybegynder
06. maj 2003 - 22:13 #11
ferrari: Den skal selvfølgelig åbnes igen lige inden "} else {" - sorry.

Det jeg mener med mærkeligt miks, er at du beder den om at sende mailene, hvis der "ikke er blevet trykket submit" - dvs. hvis submit ikke er sat! den eneste grund til at det fungerer er fordi submit-knappen fejlagtigt ikke er navngivet i den første kode - derfor vil det give uhensigtsmæssige resultater, hvis man kalder scriptet direkte!!!

Hvorfor vil du ikke afbryde php for at starte det op igen!? - det er hurtigere end at lave 5 echo-statements for at skrive formularen ud!

Endelig pæn udgave (utestet):

<?php
$formtxt = '
  <form action="mail.php" method="post" action="' . $_SERVER['PHP_SELF'] . '">
  Emne:<br><input type="text" name="subject" size="30"><br>
  Indhold:<br><textarea name="content" cols="30" rows="5">Slet denne tekst og skriv her hvad du har at skrive...</textarea><br>
  <input type="submit" name="submit" value="Send">';

if(!isset($_POST['submit'])) {
  echo "<H1>send mail</H1>\r\n$formtxt";
} else {
  $adminmail = 'admin@mail.dk';
  $subject = $_POST['subject'];
  $content = $_POST['content'];
  $header = "From: $adminmail\r\nX-mailer: PHP/" . phpversion());
  $emails = file('navnpåfil.txt');
  foreach($emails as $email) {
    mail($email, $subject, $content, $header);
  }
  unset($emails);
  echo 'Mail er sendt, vi vil vende tilbage snarest muligt.';
}
?>
Avatar billede ferrari_brian Nybegynder
06. maj 2003 - 22:22 #12
ikke helt pæn: 2 x action i formen... og stadigvæk skal X-mailer osv adskilles ellers vil det ikke virke (mine erfaringer fra tidligere)
Avatar billede ferrari_brian Nybegynder
06. maj 2003 - 22:25 #13
men jeg har fået det til at virke... det skal bare finpudses... du må gerne kigge mere på det for du har fat i en pointe...

men du har "vundet" pointsene... :-) jeg siger tak indtil videre...
Avatar billede tipsen Nybegynder
06. maj 2003 - 22:35 #14
dobbelt-aktion: Slet den første!
header: Ikke noget problem - bruger det selv på den form, men du skal være opmærksom på anførselstegnene!
Avatar billede ferrari_brian Nybegynder
06. maj 2003 - 22:38 #15
okay tak... jeg ved det med anførselstegnene... man kan kun bruge dem i echo hvis man bruger ' istedet for " af en eller anden grund
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester