Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasa Mail
Forum PHP.pl > Forum > PHP > Object-oriented programming
SET
  1. <?
  2.  
  3.  function Error($msg)
  4.  {
  5.  /* funkcja wyswietla komunikat bledu pocztym konczy dzialanie programu. Wlasciwie
  6. stanowi niejako alias do funkcji die() */
  7. echo $msg;
  8.  }
  9.  
  10.  
  11.  error_reporting (E_ERROR | E_WARNING | E_PARSE); // wyswietlaj bledy
  12.  set_time_limit(30); // time-out na 30 sek.
  13.  
  14.  
  15.  class Mail
  16.  {
  17.  
  18.  var $host; // host, z ktorym bedziemy sie laczyc
  19.  var $socket; // uchwyt
  20.  
  21.  var $mail_subject; // temat listu
  22.  var $mail_sender; // nadawca
  23.  var $mail_recipient; // odbiorca
  24.  var $mail_content; // tresc
  25.  
  26.  var $log; // log
  27.  
  28.  function Mail($server_host)
  29.  {
  30.  if (empty($server_host))
  31.  {
  32. Error('Nie wpisałeś hosta, z którym mam się połączycš');
  33.  }
  34.  
  35.  $this->host = $server_host;
  36.  }
  37.  
  38.  function connect()
  39.  {
  40. /* otwarcie gniazdka (laczenie sie z serwerem poczty) */
  41.  $this->socket = fsockopen($this-&gt;host, 25, $errno, $error, 30);
  42.  if (!$this->socket)
  43.  {
  44.  Error(&#092;"$error ($errno)\");
  45.  }
  46.  
  47.  /* wyslanie tekstu przywitalnego */
  48.  $this->send_cmd(&#092;"HELO \" . $this->host . \"rn\");
  49.  }
  50.  
  51.  function disconnect()
  52.  {
  53.  /* rozlaczenie z serwerem; przed tym nalezy jednak wyslac polecenie QUIT */
  54.  $this->send_cmd(&#092;"QUITrn\");
  55.  fclose($this->socket);
  56.  }
  57.  
  58.  function send_cmd($var_command)
  59.  {
  60.  /* funkcja wysyla do gniazdka polecenie z parametru $var_command oraz odczytuje o
  61. powiedz
  62. z serwera i przypisuja ja do zmiennej $log */
  63.  if ( fwrite($this-&gt;socket, $var_command) &gt; 0)
  64.  {
  65.  $this->log .= fgets($this->socket, 100) . '<br>';
  66.  }
  67.  }
  68.  
  69.  
  70.  function set_mail_sender($var_sender)
  71.  {
  72.  $this->mail_sender = $var_sender;
  73.  }
  74.  
  75.  function set_mail_recipient($var_recipient)
  76.  {
  77.  $this->mail_recipient = $var_recipient;
  78.  }
  79.  
  80.  function set_mail_subject($var_subject)
  81.  {
  82.  $this->mail_subject = $var_subject;
  83.  }
  84.  
  85.  function set_mail_content($var_content)
  86.  {
  87.  $this->mail_content = $var_content;
  88.  }
  89.  
  90.  function send_mail()
  91.  {
  92.  if (empty($this-&gt;mail_recipient) ||
  93.  empty($this-&gt;mail_sender)) Error('Nie wpisałeś nadawcy lub odbiorcy e-maila!');
  94.  
  95.  /* nadawca wiadomosci */
  96.  $this->send_cmd(&#092;"MAIL FROM: <\" . $this->mail_sender . \">rn\");
  97.  
  98.  /* odbiorca wiadomosci */
  99.  $this->send_cmd(&#092;"RCPT TO: <\" . $this->mail_recipient . \">rn\");
  100.  
  101.  /* informuje, ze zaraz rozpoczniemy wysylanie danych */
  102.  $this->send_cmd(&#092;"DATArn\");
  103.  
  104.  /* temat wiadomosci */
  105.  $this->send_cmd(&#092;"Subject: \" . $this->mail_subject . \"rn\");
  106.  
  107.  /* kodowanie */
  108.  $this->send_cmd(&#092;"Content-type: text/html; charset=iso-8859-2rn\");
  109.  
  110.  /* naglowki */
  111.  $this->send_cmd(&#092;"From: \" . $this->mail_sender . \"rn\");
  112.  $this->send_cmd(&#092;"Reply-To: \" . $this->mail_sender . \"rn\");
  113.  $this->send_cmd(&#092;"Return-Path: \" . $this-&gt;mail_sender . \"rnrn\");
  114.  
  115.  /* tresc wiadomosci */
  116.  $this->send_cmd($this->mail_content . &#092;"rn\");
  117.  $this->send_cmd(&#092;".rn\"); // koniec wiadomosci
  118.  
  119.  }
  120.  
  121.  }
  122.  
  123.  $mail = new Mail(&#092;"localhost');
  124.  $mail->set_mail_sender('xxx@o2.pl');
  125.  $mail->set_mail_recipient('root@localhost');
  126.  $mail->set_mail_subject('Testowy temat');
  127.  $mail->set_mail_content('Jakas tresc');
  128.  $mail->connect();
  129.  $mail->send_mail();
  130.  $mail->disconnect();
  131.  echo $mail-&gt;log;
  132.  
  133.  
  134. ?&gt;
  135. ?>


dlaczego to niedziała /serwer smtp argosoft, php 5.0.00
kszychu
A po czym wnosisz, że nie działa? Podja może jakie błędy wyświetla, albo co. Samo podanie kodu i stwierdzenie "nie działa" to może wystarczy, ale dla programu debugującego, tutaj potrzeba podać więcej szczegułów.
SET
hmm, nic nie wyświetla [pusta strona]

ps. odradzam używania serwera argosoft (lepiej używać free smtp server)
Sh4dow
jak mozesz pokolorowac ta skladnie bo trudno sie to czyta.
z tego co wiem przydalo by sie ustalic jakis port. No i dlaczego nie uzywasz imap skoro jest modul do php ktory jest prosty w implementacji i dziala poprawnie. Wiem bo bawilem sie na roznych serverach publicznych i komercyjnych, jedynie z o2.pl mialem problemy.
Chyba ze twoim zamierzeniem bylo nie uzywac imap.
Zamiast E_ERROR | E_WARNING | E_PARSE moze uzyc E_ALL ? latwiej wychwycic blad.
SET
port ustawiłem na 25, a co do raportów to pozmieniałem smile.gif
Lukasz Luczak
Mozesz mieć przez admina zablokowane połaćzenia z protem 25...czasami tak robią

Polecam wykorzystywanie sendmaila który na każdym szanującym się serwerze (nie jakimś winshit) jest dostępny.

A tak poza tym to moze byś odcczytywał odpowiedzi serwera co questionmark.gif bo serwer Ci wysyła infotrmację gdzie są błedy....

Pozdrawiam
adamos
Ja mam pytanie wlasnie apropo sendmaila - przestawilem serwer na linuxe i nie potrafie skonfigurowac sendmaila - masz moze jakies dobre info na ten temat questionmark.gif?
Dzieki i pozdrawiam
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.