Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysyłanie maila ze strony bez użycia programu pocztowego
Forum PHP.pl > Forum > Gotowe rozwiązania
Cosi
Witam mam mały/duży problem dotyczy tego iż posiadam n/w skrypt który służy do wysyłania maila ze strony www bez udziału programu pocztowego. Po wstawieniu na strone wpisaniu wszystkiego/wypełnieniu i kliknieciu na wyślij dostaje informacje ze wiadomość została wysłana i tu zaczyna sie problem - nie dostaje wiadomosci sad.gif bardzo prosil bym o pomoc jak sobie z tym poradzić ewentualnie jak skonfigurowac serwer lub php nie mam za dużego doświadczenia w obsłudze serwera wiec proszę o cierpliwość i wyrozumiałość smile.gif.

[php:1:769311981d]<?php
//sprawdzamy, czy zmienna $submit jest pusta
if (empty($submit))
{
//wyświetlamy formularz
echo "<table border="0"><form method="post">
<tr>
<td>Treść wiadomości</td>
<td><textarea name="tresc" style="width: 250px; height: 100px"></textarea></td>
</tr>
<tr>
<td>Imię, nazwisko lub nick</td>
<td><input type="text" name="imie" style="width: 250px"></td>
</tr>
<tr>
<td>Adres e-mail</td>
<td><input type="text" name="email" style="width: 250px"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="submit" value="Wyślij">&nbsp;
<input type="reset" value="Od nowa"></td></form>
</tr>
</table>";
}
//sprawdzamy, czy zmienne przesłane z formularza nie są puste
elseif (!empty($tresc) && !empty($imie) && !empty($email)){
//jeżeli powyższy warunek jest spełniony tworzona jest wiadomość
//zmienna $message zawiera treść wiadomości
$message = "Treść wiadomości:n$trescnWysłał: $imiene-mail: $email";
//zmienna $header zawiera przede wszystkim adres zwrotny
$header = "From: $imie <$email>";
//funkcja mail() za pomocą której wiadomość zostanie wysłana
mail("adres@domena.pl","Wiadomosc ze strony WWW","$message","$header");
//wyświetlenie komunikatu w przypadku powodzenia smile.gif
echo "<div align="center"><strong>Wiadomość została wysłana poprawnie!</strong></div>";
}
//lub w przypadku nie wypełnienia formularza do końca
else echo "<div align="center"><span style="color: #FF0000">Wypełnij wszystkie pola formularza!</span><br><br><input type="button" onclick="history.back();" value="<< Cofnij"></div>"
?> [/php:1:769311981d]
hub3rt
biggrin.gif mi przydalby sie taki skrypt...ale jak mowisz ze cos szwankuje...
adwol
Ponieważ widzę, że korzystasz z wbudowanej funkcji mail mam dwie uwagi:
1. Sprawdzaj co zwraca ta funkcja, czyli czy napewno udaje się jej wysłać (gdy zwróci true).
2. Nie wiem co masz na myśli mówiąc, że skrypt wysyła pocztę bez udziału programu pocztowego, ale funkcja mail zawsze wymaga czegoś co odbierze i skolejkuje tą pocztę. W przypadku uniksów uruchamia proces sendmaila na lokalnej maszynie, któremu przekazuje wiadomość. W przypadku windowsa wymaga serwera SMTP który dostanie wiadomosć. Sprawdź czy masz to odpowiednio skonfigurowane w php.ini i czy rzeczywiście jest coś co odbierałoby pocztę.
Cosi
Adwol: wiec jest tak posiadam serwer na FreeBSD który zainstalował mi kolega (ja niestety nie jestem jeszcze na takim etapie wiedzy) i posiadam na nim program pocztowy Postfix. Prosisz żebym zobaczył co zwraca funkcja "true" hmm nie wiem jak mam to sprawdzić (gdzie). Odnośnie punktu 2 mowiąc bez udziału programu pocztowego miałem na myśli to że osoba wysyłajaca nie musi posiadac np. Outloka gdyż jest wiekszość skryptow owszem, ale po kliknięciu wyślij otzrymujesz info ze mail zostanie wysłany przy pomocy twojego programu pocztowego. Dlatego chciałbym żeby można było wysłac bez udziału tego programu. Co do konfiguracji php.ini to siż zgadzam tylko czego mam tam szukac jakiego wpisu i co wpisac lub zmienic ? bo tego nie wiem. Sorki ale poproszę o cierpliwość i zrozumienie przegladalem i opisy postfixa i php ale niestety setki informacji a niewiele konkretów:( .
adwol
Cytat
Prosisz żebym zobaczył co zwraca funkcja "true" hmm nie wiem jak mam to sprawdzić (gdzie).

Źle mnie zrozumiałeś. Nie chodziło mi o funkcję true tylko o to czy funkcja mail zwraca wartość true, innymi słowy coś takiego:
[php:1:46cd3c572d]<?php
if (mail("adres@domena.pl","Wiadomosc ze strony WWW","$message","$header")) {
// udało się wysłać
} else {
// nie udało się
}
?>[/php:1:46cd3c572d]
Cytat
Co do konfiguracji php.ini to siż zgadzam tylko czego mam tam szukac jakiego wpisu i co wpisac lub zmienic ? bo tego nie wiem.

A tu zaglądałeś? Skoro masz BSD i Postfixa to powinieneś mieć plik /usr/sbin/sendmail lub /usr/lib/sendmail. Zobacz, więc, czy masz w php.ini linijkę tej postaci:
Kod
sendmail_path = /usr/sbin/sendmail


Jeśli PHPowa funkcja mail stwierdzi, że powiodło się wysłanie to wtedy trzeba będzie przyjrzeć się samemu Postfixowi.
Cosi
Wiec tak mail zwraca wartosc true ze "wiadomość zostala wyslana na adres xxx@xxx.pl " ale nadal cisza nic nie mam w poczcie co do plikow to w usr/sbin/ jest plik @sendmail oraz sendmail.old co do kodu: sendmail_path= nic nie bylo wpisane wiec teraz wpisalem =/usr/sbin/sendmail no i niestety nadal bez efektow sad.gif
adwol
Cytat
Wiec tak mail zwraca wartosc true ze "wiadomość zostala wyslana na adres xxx@xxx.pl " ale nadal cisza nic nie mam w poczcie co do plikow to w usr/sbin/ jest plik @sendmail oraz sendmail.old co do kodu: sendmail_path=   nic nie bylo wpisane wiec teraz wpisalem =/usr/sbin/sendmail no i niestety nadal bez efektow sad.gif

W takim razie poproś kolegę, który Ci instalował system o przyjrzenie się sprawie. Ja (ani pewnie nikt z forum) nie będzie Ci w stanie pomóc ,,zdalnie'' bez zajrzenia do logów, potestowania i obejrzenia ,,żywego organizmu'', a jedynie na podstawie Twoich opisów, jakkolwiek byłyby one dokładne. Po prostu często diabeł siedzi w szczegółach, a skoro od strony PHPa wszystko jest ok (mail jest wysyłany) to należy pogrzebać w Postfixie, a tu przyczyn może być wiele.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.