Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pytanie o mail().
Forum PHP.pl > Forum > PHP
kondziop
Skad funkcja mail bierze konto, z ktorego wysyla listy?
Czy jest jakas funkcja, ktorej moglbym narzucic to wlasnie konto podajac jako argumenty adres skrzynki, uzytkownika i haslo?

Jezeli nie, to jak skonfigurowac moje konto na serwerze, zeby ta funkcja na nim dzialala?

Z gory dzieki.
domm
Ogólnie mówiąc, serwer SMTP konfiguruje się w pliku php.ini lub zmienia "dynamicznie" w skrypcie korzystając z funkcji INI_SET.
pod windowsem za serwer SMTP odpowiada wpis:
Kod
SMTP = localhost

za konto z którego wysyłasz maile:
Kod
sendmail_from = me@localhost.com

do wysłania maila nie potrzeba hasła.
pod linuxem należy ustawić pełną ścieżkę do programu sendmail:
Kod
sendmail_path = DEFAULT_SENDMAIL_PATH

dokładny opis funkcji mail znajdziesz:
http://www.php.net/manual/en/ref.mail.php
kondziop
OK Spox. Przydatne. Ale co jezeli mam skrypt na jednym serwerze, a skrzynke, z ktorej chce wyslac na drugim serwerze? Co musze ustawic? dalej uzywac mail()?
Czy to sie wogole da zrobic?
domm
Dokładnie do tego służy wpis (zakładam że korzystasz z windowsa):
Kod
SMTP = localhost

z tym że localhost podaje się właśnie w przypadku tego samego serwera www i SMTP. Jeżeli korzystasz z innego, to zamiast localhost podajesz IP albo domenę serwera poczty i wszystko gra, nie ma potrzeby żeby był to ten sam serwer.
Zwróć tylko uwagę na to, żeby wpis
Kod
sendmail_from = me@jakishost

zgadzał się z podanym serwerem SMTP i żeby istniało na nim takie konto
pozdr
dragossani
Cytat
do wysłania maila nie potrzeba hasła.

Może się czepiam ale to nie zawsze prawda. Na wielu serwerach działa SMTP-AUTH (choćby na SASL'u). Niewielu adminów ma ochotę być wybranym "spam-supporter of the year". :wink:
kondziop
I tak wlasnie probowalem.
probowalem zmiennym smtp i sendmail_from przypisywac wartosci, modyfikowac je funkcja ini_set, ale caly czas nadawca wiadomosci jest moj lokalny adres:( moj kod:
Kod
$SMTP="poczta.interia.pl";

$sendmail_from="ja@interia.pl";

mail();

Widzicie jakis blad?

Mozliwe, ze moj serwer nie jest na windowsie postawiony, co wtedy?

Poza tym moje watpliwosci brak koniecznosci wpisywania nazwy i hasla wlasciciela konta. Czy kazdo moze wiec wyslac poczte z mojego konta? :{
kondziop
Bo admin to mi chyba nie zabronil zmieniac tych wartosci?! smile.gif Moglby? Na innym koncie mam zabronione mnustwo funkcji: mail(), fopen(), itd. Czy tam za pomoca funkcji ini_set() moglbym zezwolic sobie na korzystanie z nich?
domm
na początek to zgadzam się z dragossanim, mój błąd:-)
na usprawiedliwienie to jednak chyba jeszcze dużo serwerów działa bez konieczności SMTP-AUTH.
co do zmiany domyślnych wartości z php.ini to proponuję raczej takie rozwiązanie:
Kod
ini_set("SMTP","host");

ini_set("sendmail_from","user");


można oczywiście też tak jak pisałeś, ale:
Kod
$SMTP="poczta.interia.pl";

$sendmail_from="ja@interia.pl";

ini_set("SMTP","$SMTP");

ini_set("sendmail_from","$sendmail_from");
kondziop
Oki. kumam. Ale tak, jak juz nadmienilem, jush probowalem:( Dlatego ponawiam pytanie:
Cytat
Bo admin to mi chyba nie zabronil zmieniac tych wartosci?! smile.gif Moglby? Na innym koncie mam zabronione mnustwo funkcji: mail(), fopen(), itd. Czy tam za pomoca funkcji ini_set() moglbym zezwolic sobie na korzystanie z nich?


Oraz:

Cytat
Poza tym moje watpliwosci brak koniecznosci wpisywania nazwy i hasla wlasciciela konta. Czy kazdo moze wiec wyslac poczte z mojego konta? :{
KaMeLeOn
Ja proponuję klasę MAIL w PEAR'u. Tam możesz wybrać sendmail'a.
Więcej informacji w dokumentacji PEAR'a http://pear.php.net
Cytat
Na innym koncie mam zabronione mnustwo funkcji: mail(), fopen(), itd. Czy tam za pomoca funkcji ini_set() moglbym zezwolic sobie na korzystanie z nich?

Niestety nie ma takiej możliwości...
dragossani
Cytat
...brak koniecznosci wpisywania nazwy i hasla wlasciciela konta. Czy kazdo moze wiec wyslac poczte z mojego konta?
Jak słusznie zauważył domm, na większości serwerów pocztowych nie ma żadnego mechanizmu autentyfikacji przy SMTP, tak więc wysłać pocztę może każdy (chyba że są osobno założone restrykcje na jakąś klasę adresów ip). Zwróć jednak uwagę, że taka osoba nie używa "twojego konta" - przecież go nigdzie nie podaje. Ona tylko używa tego samego serwera co ty.
kondziop
No tak, tylko w ktoryms z postow w tym tamacie bylo zeby podac adres serwera i nazwe konta. To konto mialo koniecznie istniec!
Pierwsze pytanie, czy tak rzeczywiscie mozna zrobic, a drugie czy wtedy adresem zwrotnym nie bedzie moj adres? Mimo, ze ktos nie zna haslo do mojego konta!!

Swoja droga, to na zdrowy rozum trzebaby odrzucic taka mozliwosc. Tak mi sie wydaje biggrin.gif
domm
Znowu muszę się przyznać do małej nieprawidłowości: większość serwerów pocztowych przyjmie jakiekolwiek dane o adresie zwrotnym, niezależnie czy takie konto na nim istnieje, czy nie. Kiedyś tylko spotkałem się z opinią, że niektóre serwery przy wysyłaniu maila sprawdzają czy konto podane w poleceniu 'mail from:' na nim istnieje i to jest jedyna forma weryfikacji. Dlatego żeby mieć pewność że mail zostanie przyjęty do wysłania propoowałem żeby takie konto tam istniało.
Co do wysyłania i adresu zwrotnego: dane te są podawane w nagłówku maila i prawdę mówiąc jeżeli nie ma na serwerze SMTP-AUTH to możesz wysłać pocztę 'podszywając' się pod każdego. To Ty podajesz od adres zwrotny, od kogo jest mail, co zawiera itp. Jeżeli chcesz to możesz popróbować połączyć się telnetem na porcie 25 z wybranym serwerem poczty i powysyłać kilka maili używając poleceń SMTP.
bass4you
Fatal error: Call to undefined function: mail() in /home/htdocs/www.gomar.tarnow.pl/test/index.php

o co chodzi questionmark.gif? co mam napisac do admina questionmark.gif :?
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.