Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: PHP mail  (Přečteno 10776 krát)

greenfish

  • Návštěvník
  • Příspěvků: 58
    • Deny Source
PHP mail
« kdy: 29 Července 2007, 13:44:03 »
Ahoj, ucim se pomalu PHP a narazil jsem na funkci mail(). Nainstaloval jsem tedy Sendmail a zkusil odeslat. Odeslani probehlo, jenze:

1) na servery typu seznam.cz, gmail.cz, centrum.cz emaily nikdy nedorazi

2)na SquirrelMail zprava dorazi, ale je oznacena jako spam, tim padem si myslim, ze to bude i duvod, proc dochazi k bodu 1)

Pokud skript hodim na nejaky hosting, jede vse ok, jen mi to proste neda, nekdy treba budu chtit provozovat svuj vlastni server a pak narazim na stejny problem.

Taky jeste chci dodat, ze nemam statickou IP (standartni pripojeni O2 ADSL). Treba na SquirrelMail i na gmailu se v logu objevuje, ze 200.233.broadband7.iol.cz je v seznamu Spamhausu, jenze s tim ja nic nenadelam, jak rikam, nemam svou vlastni IP. Myslite, ze to bude tim? Nebo snad nekdo odesila e-maily pres PHP i bez staticke IP adresy?

Dekuju za rady.

drat

  • Aktivní člen
  • *
  • Příspěvků: 394
PHP mail
« Odpověď #1 kdy: 29 Července 2007, 20:04:42 »
Funkce mail() je nejprimitivnejsi zpusob jak poslat email. Vypada ze to, ze tvuj host nebo nejaka jeho cast se nachazi v nejakych emailovych blacklistech. Zkus se podivat treba na http://phpmailer.sourceforge.net/. Je to jednoducha knihovnicka, ktera umoznuje poslat mail pres libovolny smtp server (pokud teda mas nejaky k dispozici). Popripade si muzes neco podobneho napsat i sam, ale ted presne nevim nazvy PHP rozsireni, ktere se k tomuto ucelu pouzivaji.

Pavelp

  • Host
PHP mail
« Odpověď #2 kdy: 29 Července 2007, 20:12:35 »
Na dynamicke ip Vam bude MTA fungovat obtizne hlavne kvuli blacklistum. Castecne reseni by bylo nastavit Vasemu MTA jako relay server MTA Vaseho poskytovatele (Jeho IP jste dostal pri registraci) a zkonfigurovat tak, aby vsechnu odchozi postu relayoval pres neho. On by mel postu ze "svoji" domeny povinne prijimat k doruceni do sveta. A snad na tom blacklistu nebude - mozna. Pro testy to staci. Provozoval jsem takto podnikovy uzel v zacatcich dost dlouho, nez jsem nechal presmerovat MX zaznam na sebe.

greenfish

  • Návštěvník
  • Příspěvků: 58
    • Deny Source
PHP mail
« Odpověď #3 kdy: 30 Července 2007, 13:26:54 »
Snazil jsem se to resit prave pres providera, ale delam neco spatne. Pokud se nemylim, mela by byt aresa smtp serveru Telefoniky O2 smtp.iol.cz, take jsem jeste nasel smtp.o2isp.cz. Pokud vse nastavim, PHP mi stejne nahlasi chybu
Kód: [Vybrat]
Warning: mail() [function.mail]: SMTP server response: 554 : Relay access denied in D:\apache\www\processfeedback.php on line 14Proto bych chtel poprosit o konkretnejsi radu Pavle. Diky

Pavelp

  • Host
PHP mail
« Odpověď #4 kdy: 30 Července 2007, 18:53:17 »
1. Je potreba znat skuteckou adresu Vaseho relay MTA. Ta hlaska znamena, ze on Vas nezna a nebude pro Vas dorucovat. Typicky to byva tak, ze urcitou skupinu IP adres z poolu, z ktereho se prideluji dynamicke adresy, obsluhuje jeden MTA. Ten vi, ktere IP jsou "jeho" a ty obslouzi.

2. Zkusit se to da tak, ze se z terminalu telnetem prihlasite k tomu serveru a otestujete doruceni dopisu rucne. Pokud to jde, chyba je u Vas. Je to ale slozitejsi cesta, musite jednak znat zakladni prikazy komunikace MTA, a taky svoji soucasnou adresu ( IP nestaci), aby Vas server mohl autentikovat.

greenfish

  • Návštěvník
  • Příspěvků: 58
    • Deny Source
PHP mail
« Odpověď #5 kdy: 31 Července 2007, 11:07:57 »
Dobre, dekuji za radu. Je to na me trosku slozite, ale pokusim se jeste o nejake kroky. Chtelo by to vlastni MX zaznam a bylo by vse ok, kazdopadne jeste jednou dekuji za vase reakce

Pavelp

  • Host
PHP mail
« Odpověď #6 kdy: 31 Července 2007, 21:04:57 »
Jednoduchy test jestli relay server funguje muzete udelat takto:
V terminalu:
$ telnet smtp.o2isp.cz 25
Trying 193.165.77.60...

Pokud vypise neco jako:

Connected to smtp.o2isp.cz
Escape character is '^]'.
220 ESMTP

Je prvni krok ok, server s Vami komunikuje, ovsem zatim nevite, jestli pro vas bude dorucovat.

Odpojite se prikazem "quit"

dan

  • Návštěvník
  • Příspěvků: 63
PHP mail
« Odpověď #7 kdy: 31 Července 2007, 21:28:06 »
Jestliže ti server maily odesílá, tak by možná stačilo ve funkci nastavit hlavičku. Když to pošleš čistou funkcí mail, tak je to bez hlaviček a dalšího nastavení. Já to řeším zhruba takto, snad ti to pomůže:

// dodatečné hlavičky
    $headers .= "From: $Jmeno <$Email>\n";
    $headers .= "MIME-Version: 1.0\n";
    $headers .= "Content-Type: text/html; charset=\"UTF-8\"\n";
    $headers .= "X-Sender: \n";
    $headers .= "X-Mailer: PHP\n";
    $headers .= "Return-Path: <$Email>\n";

    $email = "Jméno: $Jmeno
\n";
    $email .= "Telefon: $Telefon
\n";
    $email .= "E-mail: $Email
\n";
    $email .= "Zpráva: $Zprava
\n";
    $email .= "
\n";

    $email = EregI_Replace("(http://[^ ]+\.[^ ]+)", " \\1", $email);
    $email = EregI_Replace("[^/](www\.[^ ]+\.[^ ]+)", " \\1", $email);


    // Nyni odesleme zpravu na email
    if(mail("nejaky@email.cz","Kontakt - formular stranky",$email,$headers)){
        echo "Odesláno";
      } else {
        echo "Chyba";
      }

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5058
    • Lomítkáři
PHP mail
« Odpověď #8 kdy: 01 Srpna 2007, 08:30:20 »
A nebude to treba uplne nahodou tim, ze smtp.iol.cz (i smtp.o2isp.cz) vyzaduje autorizaci tj. jmeno a heslo, ktere pouzivate pro pripojeni k internetu? V takovem pripade se vse trosicku komplikuje :(
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

greenfish

  • Návštěvník
  • Příspěvků: 58
    • Deny Source
PHP mail
« Odpověď #9 kdy: 01 Srpna 2007, 13:36:40 »
Citace: James
A nebude to treba uplne nahodou tim, ze smtp.iol.cz (i smtp.o2isp.cz) vyzaduje autorizaci tj. jmeno a heslo, ktere pouzivate pro pripojeni k internetu? V takovem pripade se vse trosicku komplikuje sad
Ano, myslim, ze problem bude prave v autentizaci, tim padem se vylucuje pouziti ciste mail() fce v pripade, ze nemam MX zaznam.
Co se tyce tveho skriptu dane, tak zadna zmena, porad to prijde jako spam (Squirell mail) nebo vubec (gmail.com, seznam.cz). Na squirell mailu to napise tuto tabulku, podle ktere to je spam:
Kód: [Vybrat]
Spam detection software, running on the system "server-008.servers.savana.cz", has
identified this incoming email as possible spam.  The original message
has been attached to this so you can view it (if it isn't spam) or label
similar future email.  If you have any questions, see
the administrator of that system for details.

Content preview:  JmĂŠno: TomĂĄĹĄ SlĂ­Ĺž E-mail: greenfish29@gmail.com ZprĂĄva:
   DobrĂ˝ den, chci se VĂĄm omluvit za Ĺ�eĹĄenĂ­, kterĂĄ nefungujĂ­. [...]

Content analysis details:   (13.1 points, 5.0 required)

 pts rule name              description
---- ---------------------- --------------------------------------------------
 3.3 FROM_ILLEGAL_CHARS     From: has too many raw illegal characters
 0.3 MAILTO_TO_SPAM_ADDR    URI: Includes a link to a likely spammer email
 0.0 BAYES_00               BODY: Bayesian spam probability is 0 to 1%
                            [score: 0.0000]
 0.6 HTML_SHORT_LENGTH      BODY: HTML is extremely short
 0.0 HTML_MESSAGE           BODY: HTML included in message
 0.9 HTML_10_20             BODY: Message is 10% to 20% HTML
 0.0 MIME_HTML_ONLY         BODY: Message only has text/html MIME parts
 2.6 NO_DNS_FOR_FROM        DNS: Envelope sender has no MX or A DNS records
 3.1 RCVD_IN_XBL            RBL: Received via a relay in Spamhaus XBL
                            [88.102.233.200 listed in sbl-xbl.spamhaus.org]
 1.7 RCVD_IN_NJABL_DUL      RBL: NJABL: dialup sender did non-local SMTP
                            [88.102.233.200 listed in combined.njabl.org]
 0.5 HTML_MIME_NO_HTML_TAG  HTML-only message, but there is no HTML tag

The original message was not completely plain text, and may be unsafe to
open with some email clients; in particular, it may contain a virus,
or confirm that your address can receive spam.  If you wish to view
it, it may be safer to save it to a file and open it with an editor.
Citace: Pavelp
Jednoduchy test jestli relay server funguje muzete udelat takto:
V terminalu:
$ telnet smtp.o2isp.cz 25
Trying 193.165.77.60...
Tohle je presne jak rikate, pripoji se bez potizi, skoda, ze jeste neposila...

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5058
    • Lomítkáři
PHP mail
« Odpověď #10 kdy: 01 Srpna 2007, 16:26:42 »
Co se tyce autentifikace - doporucoval bych nainstalovat postfix a tomu dat relay na smtp.iol.cz, autentifikaci postfix umi (mozna i sendmail, nevim?)

Co se tyce toho spamu - problemem je, ze vase IP je na njabl (vyresi postfix s relayem), dalsim problemem je FROM_ILLEGAL_CHARS - tj. pravdepodobne mate v hlavicce od neplatne (ceske) znaky, resenim je bud tyto odstranit (tj. psat bez diakritiky), anebo hlavicku "kontertovat" do podoby definovane normou
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

Pavelp

  • Host
PHP mail
« Odpověď #11 kdy: 01 Srpna 2007, 20:31:57 »
Postfix "sendmail" umi. Pro PHP ?

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5058
    • Lomítkáři
PHP mail
« Odpověď #12 kdy: 01 Srpna 2007, 21:30:11 »
Citace: Pavelp
Postfix "sendmail" umi. Pro PHP ?
Nejak jsem nepochopil? Postfix neni sendmail, ale "tvari" se tak :) A php to tak bere :) A postfix umi i relayovat s autentifikaci, ten otaznik byl spise na cisty sendmail, zda umi relay s auth. Asi ano, ale pro zbytecnou slozitost konfigurace sendmailu jsem se do nej nikdy nepoustel
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

Pavelp

  • Host
PHP mail
« Odpověď #13 kdy: 01 Srpna 2007, 21:44:57 »
Nechci to zamotavat, je mi jasne o co jde, nemam pripominky.

greenfish

  • Návštěvník
  • Příspěvků: 58
    • Deny Source
PHP mail
« Odpověď #14 kdy: 02 Srpna 2007, 13:48:03 »
Citace: merlin
...dalsim problemem je FROM_ILLEGAL_CHARS - tj. pravdepodobne mate v hlavicce od neplatne (ceske) znaky, resenim je bud tyto odstranit (tj. psat bez diakritiky)...
Tak vazne nevim, proc to hlasi tuto zalezitost s neplatnymi znaky v hlavicce, vsude jsem totiz psal bez diakritiky, ale to jen tak na okraj. Pomalu to vzdavam, pokud budu potrebovat rozesilat emaily pomoci PHP funkce mail(), je lepsi mit vlastni statickou IP.

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5058
    • Lomítkáři
PHP mail
« Odpověď #15 kdy: 02 Srpna 2007, 17:03:34 »
Neni to potreba, nainstalujte si postfix a nakonfigurujte jej tak, aby posilal pres relayhost iolu s  overenim.

Mimochodem, toto mi jako moc bez diakritiky neprijde: :)
JmĂŠno: TomĂĄĹĄ SlĂ­Ĺž E-mail: greenfish29@gmail.com ZprĂĄva:
   DobrĂ˝ den, chci se VĂĄm omluvit za Ĺ�eĹĄenĂ­, kterĂĄ
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

greenfish

  • Návštěvník
  • Příspěvků: 58
    • Deny Source
PHP mail
« Odpověď #16 kdy: 03 Srpna 2007, 13:43:40 »
No mate pravdu, ja pocital jen s hlavickou "From". Tohle je vysledek kodovani, kde pouzivam UTF-8 a fce mail() pouziva jine, nevim presne jake, ale kdyz jsem kodovani zmenil na windows-1250, uz to chodilo, takze asi to bude ono. Jeste jsem moc nekoumal, jestli se da menit kodovani mail() funkce, ale predpokladam, ze asi ano. Zkusim teda ten Postfix a dam vedet, jak jsem dopadl.

Petr Merlin Vaněček

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 5058
    • Lomítkáři
PHP mail
« Odpověď #17 kdy: 03 Srpna 2007, 14:40:53 »
Spravne byste nemel menit kodovani fce mail(), ale upravit zpravu tak, aby odpovidala normam tj. idelane ji prevest do base64, ktery je bezpecny pro lib. kodovani atd.
Stiskni CTRL + W ...
80% mozku tvoří kapalina ... u některých brzdová

 

Provoz zaštiťuje spolek OpenAlt.