Avatar billede dotcom1 Nybegynder
10. februar 2007 - 16:27 Der er 3 kommentarer og
1 løsning

Mailscript til flere modtagere i en MySQL-database

Hej.

Jeg har fundet dette formmail-script, men jeg vil gerne kunne have, at det skal kunne sende til en række e-mailadresser, som jeg har i en MySQL-database (der bliver aldrig mere end 20 stk.):

<?php
if (isset($_POST['submit']))
{
if (!empty($_POST['name']) && // tjek, at der er skrevet et navn
!empty($_POST['email']) &&    // tjek, at der er skrevet en e-mail-adresse
!empty($_POST['subject']) &&  // tjek, at der er skrevet et subject
!empty($_POST['message']) &&  // tjek, at der er skrevet en besked

// her følger sikringen mod spambotter
!strpos($_POST['name'], "dit_domain.dk") &&  // tjek, at dit domæne ikke er skrevet i feltet "navn"
!strpos($_POST['email'], "dit_domain.dk") && // tjek, at dit domæne ikke er skrevet i feltet "email"
!strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn"
!eregi("\r",$_POST['name']) &&  // tjek, at der ikke er "vogn-retur" i "navn"
!eregi("\n",$_POST['name']) &&  // tjek, at der ikke er "linjeskift" i "navn"
!eregi("\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email"
!eregi("\n",$_POST['email']))  // tjek, at der ikke er "linjeskift" i "email"

// er alt ok, fortsættes med afsendelse af mailen
{
  $headers="From: ".$_POST['name']."<".$_POST['email'].">";
  if (@$_POST['customer_copy'])
  {
  $headers .= "\r\nBcc: ".$_POST['email'];
  }
  if (@mail("dit.navn@dit_domain.dk", strip_tags($_POST['subject']),
  stripslashes(strip_tags($_POST['message'])), $headers))
  {
  echo "<p>Tak for din henvendelse. Jeg svarer så hurtigt som muligt.</p>";
  }
  else
  {
  echo "<p>E-mailen blev ikke sendt. Der skete en fejl. Prøv igen!</p>";
  }
}
else
{
  echo "<p>Mailen kunne ikke sendes, alle felter skal udfyldes korrekt!</p>";
}
}
?>

Er der en, som kan hjælpe me at ændre criptet, så der sendes til de adresser, der ligger i databasen?

Min tabel hedder ab_records og feltet Email1.

Mvh.
Avatar billede dcheng Novice
10. februar 2007 - 17:22 #1
Følgende kode sender nu til email adresser i feltet "Email1" som er i tabellen "ab_records"..

Men jeg forstår ikke meningen i scriptet. Det er jo en slags support mail? Hvorfor skal den sendes til 20 e-mails?

Men det har du nok en grund til.

Før du bruger det så skal du self. lige selv sætte disse ting op:
mysql_connect();
mysql_select_db();
mysql_close();

<?php
// mysql_connect();
// mysql_select_db();
if (isset($_POST['submit']))
{
if (!empty($_POST['name']) && // tjek, at der er skrevet et navn
!empty($_POST['email']) &&    // tjek, at der er skrevet en e-mail-adresse
!empty($_POST['subject']) &&  // tjek, at der er skrevet et subject
!empty($_POST['message']) &&  // tjek, at der er skrevet en besked

// her følger sikringen mod spambotter
!strpos($_POST['name'], "dit_domain.dk") &&  // tjek, at dit domæne ikke er skrevet i feltet "navn"
!strpos($_POST['email'], "dit_domain.dk") && // tjek, at dit domæne ikke er skrevet i feltet "email"
!strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn"
!eregi("\r",$_POST['name']) &&  // tjek, at der ikke er "vogn-retur" i "navn"
!eregi("\n",$_POST['name']) &&  // tjek, at der ikke er "linjeskift" i "navn"
!eregi("\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email"
!eregi("\n",$_POST['email']))  // tjek, at der ikke er "linjeskift" i "email"

// er alt ok, fortsættes med afsendelse af mailen
{
  $headers="From: ".$_POST['name']."<".$_POST['email'].">";
  if (@$_POST['customer_copy'])
  {
  $headers .= "\r\nBcc: ".$_POST['email'];
  }
  $sql = "SELECT Email1 FROM ab_records";
  $result = mysql_query($sql);
  while($row = mysql_fetch_array($result)) {
      if (@mail($row[0], strip_tags($_POST['subject']),
      stripslashes(strip_tags($_POST['message'])), $headers))
      {
      echo "<p>Tak for din henvendelse. Jeg svarer så hurtigt som muligt.</p>";
      }
      else
      {
      echo "<p>E-mailen blev ikke sendt. Der skete en fejl. Prøv igen!</p>";
      }
  }
}
else
{
  echo "<p>Mailen kunne ikke sendes, alle felter skal udfyldes korrekt!</p>";
}
}

// mysql_close();
?>
Avatar billede dotcom1 Nybegynder
18. februar 2007 - 16:23 #2
hej dcheng.
Tak for din hjælp. Det virker fint, bortset fra at efter en mail er sendt, så skriver den: "Tak for din henvendelse. Jeg svarer så hurtigt som muligt." lige så mange gange som det antal mails, der er sendt. Kan du hjælpe med at rette det?

Pft.
Avatar billede dcheng Novice
18. februar 2007 - 18:32 #3
Nu skriver den det kun "Tak for din henvendelse. Jeg svarer så hurtigt som muligt." 1. gang. Og den skriver "Mail nr. XXX blev ikke sendt." hvis den fejler med at sende en af dem, XXX er naturligvis et tal som svarer til den mail som blev sendt. Den første starter med "1".

<?php
// mysql_connect();
// mysql_select_db();
if (isset($_POST['submit']))
{
if (!empty($_POST['name']) && // tjek, at der er skrevet et navn
!empty($_POST['email']) &&    // tjek, at der er skrevet en e-mail-adresse
!empty($_POST['subject']) &&  // tjek, at der er skrevet et subject
!empty($_POST['message']) &&  // tjek, at der er skrevet en besked

// her følger sikringen mod spambotter
!strpos($_POST['name'], "dit_domain.dk") &&  // tjek, at dit domæne ikke er skrevet i feltet "navn"
!strpos($_POST['email'], "dit_domain.dk") && // tjek, at dit domæne ikke er skrevet i feltet "email"
!strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn"
!eregi("\r",$_POST['name']) &&  // tjek, at der ikke er "vogn-retur" i "navn"
!eregi("\n",$_POST['name']) &&  // tjek, at der ikke er "linjeskift" i "navn"
!eregi("\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email"
!eregi("\n",$_POST['email']))  // tjek, at der ikke er "linjeskift" i "email"

// er alt ok, fortsættes med afsendelse af mailen
{
  $headers="From: ".$_POST['name']."<".$_POST['email'].">";
  if (@$_POST['customer_copy'])
  {
  $headers .= "\r\nBcc: ".$_POST['email'];
  }
  $sql = "SELECT Email1 FROM ab_records";
  $result = mysql_query($sql);
  $i = 1;
  while($row = mysql_fetch_array($result)) {
      if (@mail($row[0], strip_tags($_POST['subject']),
      stripslashes(strip_tags($_POST['message'])), $headers))
      {
//      echo "True";
      }
      else
      {
      echo "Mail nr. ".$i." blev ikke sendt.";
      }
      $i++;
  }
  echo "<p>Tak for din henvendelse. Jeg svarer så hurtigt som muligt.</p>";
}
else
{
  echo "<p>Mailen kunne ikke sendes, alle felter skal udfyldes korrekt!</p>";
}
}

// mysql_close();
?>
Avatar billede dotcom1 Nybegynder
20. februar 2007 - 13:54 #4
Det virker perfekt. Mange tak for din hjælp.
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