webForumDet fria alternativet

Skicka mail till alla i tabellen email

PHP

17 svar · 1 364 visningar · startad av maweer

Medlem sedan juli 2012123 inlägg
Frågan#1

Hej

Jag får inte rätt på det här :)
Jag vill hämta alla email adresser från min databas och skicka mail till alla samtidigt, men jag får inte rätt på det. Jag får inget felmeddelande någon stans, men det kommer inga mail

Någon snäll som vill hjälpa mig och se vad jag gjort för galet

<?

$hamta = "SELECT * FROM adresser WHERE email"; 
$resultat = mysql_query($hamta) or die("Det gick inte att hämta information från databasen!"); 

while($rad = mysql_fetch_array($resultat)) 

$today = date("d M, Y");
$to = "$_POST[email]";
$from = "Mig";
$subject = "email till alla";
$forminfo =
"Informationssidan är uppdaterad:\n
$_POST[namn]\n
http://sida.se/medlem/\n
Mailet går inte att svara på.

Skickat den: $today\n\n";

$formsend = mail("$to", "$subject", "$forminfo", "From: $from\r\nReply-to:$from");
?>
Medlem sedan aug. 2008815 inlägg
#2

Det verkar som du hämtar adresserna från en databas? Men du skriver:

$_post['email']

Alltså du försöker hämta ett värde från ett formulär.

Varför skriver du inte bara ut alla variabler med echo och ser om de stämmer. Sen kan du exempelvis skriva:

if(mail(....)){
echo "brevet skickades";
}else{
echo"brevet skickades inte";
}

för att se vilka adresser som inte gick att skicka till osv...

Medlem sedan juli 2012123 inlägg
#3

Så här gjorde jag och då skrev den ut mailadresser

<?
require 'conn.php';

$sql = mysql_query("SELECT * FROM adresser ORDER BY namn ASC LIMIT 50"); 
while ($rad = mysql_fetch_array($sql))

 { 
   $namn = $rad['namn']; 
   $instrument = $rad['instrument'];
   $telefonh = $rad['telefonh']; 
   $telefonm = $rad['telefonm']; 
   $email = $rad['email']; 
   $date = $rad['datum']; 

   echo($rad["email"]);
   
} 

?>

men när jag la till

mail($rad['email'], $subject, $message, $headers);

så skickades inget mail

Medlem sedan aug. 2008815 inlägg
#4

Först så sparar du ju $rad['email'] i variabeln $email. Så du borde ju använda den variabeln och skriva:

mail($email, $subject, $message);

Sen för att se om mejlet skickas eller inte så kan du skriva:

if(mail($email, $subject, $message)){
   echo "skickades";
}else{
   echo "skickades inte";
}

Istället för "mail($email, $subject, $message);"

Sen har du några variabler som heter $subject, $message, $headers? Headers verkar vara "optional" alltså att den inte behövs om du inte vill. Du kan dock använda den för att skriva vem som skickat, cc, bcc osv... De andra två kanske i allafall måste vara definierade?

Lägg till:

$subject="ett ämne";
$message="ett meddelande";

innan mail kommandot.

Sen så kan mejlet hamna i skräpposten så du kan ju kolla där? En annan sak du bör kolla är ju att du har skrivit in rätt emailadress i databasen ;)

Medlem sedan juni 20006 031 inlägg
#5

Första frågan:
Var kör du scriptet? På din egna dator eller ett webbhotell?
Om det är på din egna dator, har du konfigurerat PHP för att kunna skicka mail? D.v.s ställt in smtp mm.

Medlem sedan juli 2012123 inlägg
#6

@ noshornin: Det blev "skickades inte"
Hahaha jodå, jag har skrivet rätt mailadress, det har jag kollat 788 gånger :)
Men det lustiga är att det skrivs ut när jag skriver echo($rad["email"]);

@ Pedda: Jag kör det på ett webbhotell, så det hoppas jag att jag slipper :)

Börja misstänka väldigt skarpt att jag har gjort något helt konstigt i koden
För hur jag än gör så står det "skickades inte"

<?
require 'conn.php';

$sql = mysql_query("SELECT * FROM adresser ORDER BY namn ASC LIMIT 50"); 
while ($rad = mysql_fetch_array($sql))

 { 
   $namn = $rad['namn']; 
   $instrument = $rad['instrument'];
   $telefonh = $rad['telefonh']; 
   $telefonm = $rad['telefonm']; 
   $email = $rad['email']; 
   $date = $rad['datum']; 

$subject="ett ämne";
$message="ett meddelande";

mail($email, $subject, $message);
   
} 

if(mail($email, $subject, $message)){
   echo "skickades";
}else{
   echo "skickades inte";
}

?>
Medlem sedan aug. 2008815 inlägg
#7
<?
require 'conn.php';

$sql = mysql_query("SELECT * FROM adresser ORDER BY namn ASC LIMIT 50"); 
while ($rad = mysql_fetch_array($sql))
{ 
   $namn = $rad["namn"]; 
   $instrument = $rad["instrument"];
   $telefonh = $rad["telefonh"]; 
   $telefonm = $rad["telefonm"]; 
   $email = $rad["email"]; 
   $date = $rad["datum"]; 

   $subject="ett ämne";
   $message="ett meddelande";

   if(mail($email, $subject, $message)){
      echo "skickades";
   }else{
      echo "skickades inte";
   }
}
?>

tänkte jag :P

Nu la du if mail grejen utanför loopen. Alltså mail() funktionen är en boolean funktion. När den körs så returneras true eller false.

En annan sak jag såg nu var att du skriver $rad['datum']. Med ' istället för ". Vet inte om det spelar någon roll men du kan ju prova koden ovanför och se...

Medlem sedan juli 2012123 inlägg
#8

Aha du tänker så :P

Tyvärr så blev det inte skickat

Alltså, egentligen så är det ju endast mailadressen jag behöver, så jag förstår faktiskt inte själv varför JAG hämtar all information :)
Borde det inte räcka med att jag skriver

<?
require 'conn.php';

$sql = mysql_query("SELECT * FROM adresser ORDER BY namn ASC LIMIT 50"); 
while ($rad = mysql_fetch_array($sql))
{ 
 
   $email = $rad["email"]; 

   $subject="ett ämne";
   $message="ett meddelande";

   if(mail($email, $subject, $message)){
      echo "skickades";
   }else{
      echo "skickades inte";
   }
}
?>

Fast, det hjälpte inte ändå
Ja....jag antar att du märker att jag inte är så duktig på detta :)

Medlem sedan aug. 2008815 inlägg
#9

Jo det räcker.

Men om du skriver

echo $email;

nu, skrivs mejladressen ut då?

Medlem sedan juli 2012123 inlägg
#10

Jodå :)
Jag la den i

}else{
      echo "skickades inte";
      echo $email;
   }

och då fick jag skickades inte och adressen utskriven
och lika dant blev det om jag la den efter den allra sista "måsvingen"

Medlem sedan juli 2012123 inlägg
#11

Men vänta...förlåt!

Det skickades ju... :) :)

Skall jag plocka bort if-satsen eller skall jag ta bort alla echo

Medlem sedan aug. 2008815 inlägg
#12

Nice att det löste sig. Du kan ju göra som du vill. Jag skulle behåll if-satsen och utskriften för att se om det blir något fel i framtiden.

Du kan även markera det inlägget som hjälpte dig att lösa problemet som lösning i den här tråden. För om det var mitt inlägg så får jag ett extra poäng på forumet ;)

Medlem sedan juli 2012123 inlägg
#13

Alltså du skall ha stort tack för hjälpen :)
It made my day!

Hahahaha men klart att du skall ha extra poäng för det :)
Ännue en gång tack :)

Medlem sedan aug. 2008815 inlägg
#14

yeay :) tack för poängen

Medlem sedan juli 2012123 inlägg
#15

Alltså förlåt det här vad det skummaste jag har varit med om

Jag har inte gjort något med koden eller rört den, men helt plötsligt så funkar det inte...märkligt värre :o

Det blir som innan att den skriver ut på skärmen att det inte och skickade och den skriver ut mailadressen

<?
require 'conn.php';

$sql = mysql_query("SELECT * FROM adresser ORDER BY namn ASC LIMIT 50"); 
while ($rad = mysql_fetch_array($sql))
{ 
 
   $email = $rad["email"]; 

   $subject="ett ämne";
   $message="ett meddelande";

   if(mail($email, $subject, $message)){
      echo "skickades";
   }else{
      echo "skickades inte";

   }
      
}

echo $email;
?>

Kan det vara webbhotellet som spökar eller har jag lyckats att skriva dit något i koden som jag inte ser omedvetet :)

Medlem sedan aug. 2008815 inlägg
#16

Det där kan omöjligt vara fel om epostadressen skrivs ut. Tror nog det kan vara ditt webbhotell. Vilket webbhotell har du? Försök mejla dem och fråga...

Medlem sedan juli 2012123 inlägg
#17

Ja jag håller med dig :)
Och iom att det funkade klockrent innan så!
Jag har b-one som webbhotell, får nog göra det!

Jag får se i morgon om det har löst sig :)
Stort tack i alla fall :)

Medlem sedan juli 2012123 inlägg
#18

Fick just ett svar på varför det slutade att fungera helt plöstligt igår.

Man måste ange en epostadress under sin domän hos one.com, annars är
begränsningen cirka 20 mail per dygn. Och det hade inte jag gjort!

Tänkte jag skriver det ifall det kan hjälpa någon :)

264 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)