Napisałem sobie taki skrypcik:
<? php
$do= array('mail' . 'mail' . 'mail' );
$temat="temat";
$tresc="jakaœ tam treœc";
$ilosc=3;
for( $liczba=0; $liczba<$ilosc; $liczba++)
mail($do[$liczba], $temat, $tresc);
echo "$do[$liczba]";
echo
;
?>
I teraz mam 2 pytania:
Co jest w skrypcie nie tak że nie działa?
Czy gdy wyślę maile do adresatów z $do to będzie do nich dochodziła wiadomosc HTML jesli oczywiście $tersc będzie zawierała kod html??
Złączono Posta : 30.07.2007 (Pon) 21:51
byc może mój serwer nie obsługuje pentli mail. CZy może ktoś sprawdzic ten skrypt?
Airborn
(Airborn)
30 Lipiec 2007 21:21
#2
to co się widać na pierwszy rzut oka: elementy tablicy rozdziela się przecinkami, a nie kropkami. czy coś więcej? nie widzę, ale głowy nie dam, przejrzałem pobieżnie
Agaton
(Agatonster)
31 Lipiec 2007 05:22
#3
radmistrz2
Poczytaj - Konkretne tematy… ze zwróceniem szczególnej uwagi na pierwszy post.
Proszę poprawić tytuł tematu na konkretny, mówiący o problemie.
W tym celu proszę użyć przycisku
Zignorowanie prośby będzie skutkowało usunięciem tematu do Kosza.
kutar
(Kutar 0)
31 Lipiec 2007 09:27
#4
<? php
$do= array('mail' , 'mail' , 'mail' );
$temat="temat";
$tresc="jakaœ tam treœc";
$ilosc=3;
for( $liczba=0; $liczba<$ilosc; $liczba++) {
mail($do[$liczba], $temat, $tresc);
echo $do[$liczba];
echo
;}
?>
Elementy tablicy (zresztą argumenty każdej funkcji) oddziela się przecinkiem. Kropka łączy stringi, więc to co masz w arrayu to nie trzy elementy, a jeden.
Nawiasy klamrowe w pętli for.
nie wiem dla czego, ale dalej nie działa mi ten skrypt. Może ktoś go sprawdzic bo ja już nie mam pojęcia co jest nie tak.
kutar
(Kutar 0)
31 Lipiec 2007 12:20
#6
<? php
może niepotrzebna spacja
<?php
daj na początku
<?php error_reporting(E_ALL);
i powiedz czy wywala jakiś błąd.
Być może Twój serwer wymaga dodatkowych nagłówków, np. nadawcy:
http://pl2.php.net/manual/pl/function.mail.php
Być może w ogóle funkcja mail() jest wyłaczona, na jakim serwerze odpalasz skrypt?
odpalam go na isx.pl. Zrobiłem to co mówiłeś i nie wywala żadnego błędu, a mailing jak nie działała tak nie działa. Może faktycznie wina serwera. Zna ktoś jakis szybki darmowy serwer gdzie można wypróbowac ten skrypt?
Złączono Posta : 31.07.2007 (Wto) 15:15
a mógł by ktośna swom serwerze odpalic skrypt?
system
(system)
1 Sierpień 2007 13:18
#8
Był mały błąd, teraz działa. Wyświetla i wysyła.
<?php
$do= array('mail' , 'mail');
$temat="temat";
$tresc="jakas tam tresc";
$ilosc=2;
for( $liczba=0; $liczba<$ilosc; $liczba++) {
mail($do[$liczba], $temat, $tresc);
echo $do[$liczba];
echo '
'; }
?>
a w czym był błąd? bo tak patrzę i widzę tylko zmienioną liczbę maili?? ale dzięki
system
(system)
2 Sierpień 2007 10:02
#10
radmistrz2:
echo ;
Liczbę mail zmieniłem bo miałem dwa adresy pod ręką
troszkę rozbudowałem skrypt. Teraz napotkałem na następny problem. Nie wiem jak wkomponowac pobieranie maili z pliku w skrypt (jakoś nie mam dzisiaj passy do myślenia) Chcę wkomponowac wiersz: $do = explode( “\n”, $lista[$liczba]);
w skrypt:
<?php
//zmienne
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
$temat="Siema Siema :D";
$tresc="Siema Siema :D";
$parametr="From: Radek ";
$ilosc=10;
//wczytywanie maili
$lista = file("$DOCUMENT_ROOT/../lista.txt");
$ilosc_maili = count($lista);
if ($ilosc_maili == 0)
{
echo '
Brak maili w bazie
Proszę spróbować później.';
}
//wysyłanie maili
for( $liczba=0; $liczba<$ilosc; $liczba++) {
mail($do[$liczba], $temat, $tresc, $parametr);
echo $do[$liczba];
echo '
'; }
?>[/code]
Fiolek
(Fiołek)
3 Sierpień 2007 20:52
#12
W pętli masz warunek $liczba < $ilość, z czego $ilość zawsze jest równa 10! A jeśli nie ma tylu maili w pliku to funkcja mail dostaje puste adresy email.
Wystarczy zmienić:
for( $liczba=0; $liczba<$ilosc; $liczba++)
na:
for( $liczba=0; $liczba<$ilosc_maili; $liczba++)
i powinno działać. Aha, można też usunąć
$ilosc=10;
bo i tak nie jest nigdzie używana.
$ ilosc jest używana do wyznaczenia ilości maili, które mają zostac wysłane, a ja chcęwkomponowac w to ten kod:
$do = explode( "\n", $lista[$liczba]);
Fiolek
(Fiołek)
3 Sierpień 2007 21:10
#14
Ale chciałbym zauważyć, że już to jest w funkcji file(). Przeczytaj o niej .
tak jest w funkcji file ale w skrypcie chcę sam (w przyszłości za pomocą formularza) decydowac do ilu osób ma zostac wysłany mail.
Złączono Posta : 04.08.2007 (Sob) 10:42
no passa myślenia z nowym dniem wróciła. Wkomponowałem to ch chciałem, tylko teraz skrypt mi znowu nie działa :
<?php
//zmienne
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
$temat= "temat";
$tresc= "tresc";
$parametr="From: Radek ";
$ilosc=10;
//wczytywanie listy maili
$lista = file("$DOCUMENT_ROOT/../lista.txt");
$ilosc_maili = count($lista);
if ($ilosc_maili == 0)
{
echo '
Brak maili w bazie
Proszę spróbować później.';
}
$do = explode( "\n", $lista); //rozbijanie listy do tablicy
//wysyłanie maili
for( $liczba=0; $liczba<$ilosc; $liczba++) {
mail($do[$liczba], $temat, $tresc, $parametr);
echo $do[$liczba];
echo '
'; }
?>[/code]
Fiolek
(Fiołek)
4 Sierpień 2007 09:07
#16
Dodając funkcję explode rozbijasz zmienną która jest tablicą. To nie ma prawa działać. Jeśli chcesz wybierać do ilu osób mają być wysyłane maile, to najlepiej dodać do starszej wersji w miejsce explode jeden warunek:
if($ilosc > $ilosc_maili)
{
$ilosc = $ilosc_maili;
}
Jeśli w pliku będzie więcej maili niż $ilosc to pętla wykona się $ilosc razy. W przeciwnym wypadku pętla wykona się $ilosc_maili(gdzie $ilosc_maili < $ilosc) razy.
hmm nie bardzo czaję. Możesz mi wysłac cały przerobiony kod?
Fiolek
(Fiołek)
4 Sierpień 2007 09:57
#18
A proszę
<?php
//zmienne
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
$temat="Siema Siema :D";
$tresc="Siema Siema :D";
$parametr="From: Radek ";
$ilosc=10;
//wczytywanie maili
$lista = file("$DOCUMENT_ROOT/../lista.txt");
$ilosc_maili = count($lista);
if ($ilosc_maili == 0)
{
echo '
Brak maili w bazie
Proszę spróbować później.';
}
if($ilosc > $ilosc_maili) //Sprawdza czy jest więcej maili niż można wysłać
{
$ilosc = $ilosc_maili;
}
//wysyłanie maili
for( $liczba=0; $liczba<$ilosc; $liczba++) {
mail($do[$liczba], $temat, $tresc, $parametr);
echo $do[$liczba];
echo '
'; }
?>
[/code]
no tak teraz czaje ale główny problem dalej nie jest rozwiązany. Nie wczytuje mi listy z pliku. W pliku maile są ułożone w następujący sposób:
mail1
mail2
mail3
mail4
...
I właśnie explode rozbijało to na tablocę
Fiolek
(Fiołek)
4 Sierpień 2007 10:51
#20
Ale funkcja file powinna to rozbić.
Gdzie to testujesz? U siebie na komputerze? Bo jeśli tak to $_SERVER[‘DOCUMENT_ROOT’] może wskazywać na inny adres niżeli ten w którym znajdują się pliki.
Spróbuj zmienić ścieżkę do pliku w funkcji file, usuwając $DOCUMENT_ROOT ze ścieżki.