Podręcznik użytkownika CodeIgniter wersja 2.2.1


Klasa Email

Klasa Email obsługuje następujące funkcje:

Wysyłanie wiadomości email

Wysyłanie wiadomości email jest nie tylko proste, możesz je skonfigurowac "w locie" lub ustawic preferencje w pliku konfiguracyjnym.

Oto podstawowy przykład demonstrujący w jaki sposób możesz wysyłać wiadomości email. Ten przykład zakłada, że wysyłasz email z jednego ze swoich kontrolerów.

$this->load->library('email');

$this->email->from('your@example.com', 'Your Name');
$this->email->to('someone@example.com');
$this->email->cc('another@another-example.com');
$this->email->bcc('them@their-example.com');

$this->email->subject('Email Test');
$this->email->message('Testing the email class.');

$this->email->send();

echo $this->email->print_debugger();

Ustawianie preferencji

Istnieje 17 różnych preferencji, aby możliwe było dokładne określenie w jaki sposób wiadomości email mają być wysyłane. Preferencje możesz ustawić ręcznie, tak jak przedstawiliśmy to tutaj lub automatycznie za pośrednictwem pliku konfiguracyjnego, opisanego poniżej:

Perferencje są ustawiane poprzez przypisanie tablicy zmiennych do funkcji initialize. Oto przykład, w jaki sposób możesz ustawić te preferencje:

$config['protocol'] = 'sendmail';
$config['mailpath'] = '/usr/sbin/sendmail';
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE;

$this->email->initialize($config);

Uwaga: Większość preferencji ma swoje wartości domyślne, które zostaną użyte jeśli nie ustawisz własnych.

Ustawianie preferencji za pośrednictwem pliku konfiguracyjnego

Jeśli nie chcesz ustawiać preferencji za pośrednictwem powyższej metody, możesz zamiast tego umieścić je w pliku konfiguracyjnym. Wystarczy, że stworzysz plik o nazwie email.php, który będzie zawierał tablicę $config. Jeśli zachowasz ten plik w config/email.php, będzie on używany automatycznie. Jeśli Twoje ustawienia preferencji znajdują się w pliku konfiguracyjnym, NIE będziesz musiał korzystać z funkcji $this->email->initialize().

Preferencje email

Poniżej znajduje się lista preferencji, które można wykorzystać przy wysyłaniu wiadomości email.

Preferencja Domyślna wartość Opcje Opis
useragentCodeIgniterBrak"User agent".
protocolmailmail, sendmail lub smtpProtokuł do wysyłki wiadomości email.
mailpath/usr/sbin/sendmailBrakŚcieżka serwerowa do Sendmail.
smtp_hostNo DefaultBrakAdres serwera SMTP.
smtp_userNo DefaultBrakNazwa użytkownika SMTP.
smtp_passNo DefaultBrakHasło użytkownika SMTP.
smtp_port25BrakPort SMTP.
smtp_timeout5BrakSMTP Timeout (w sekundach).
wordwrapTRUETRUE lub FALSE (boolean)Włącz zawijanie tekstu.
wrapchars76 Po ilu literach ma zostać właczone zawijanie tekstu
mailtypetexttext lub htmlTyp wiadomości email. Jeśli wysyłasz email w postaci HTML, musisz go wysłać jako kompletną stronę internetową. Upewnij się, że nie masz żadnych relatywnych linków lub relatywnych odnośników do plików graficznych - nie będą działać.
charsetutf-8Kodowanie znaków (utf-8, iso-8859-1, itp.).
validateFALSETRUE lub FALSE (boolean)Czy sprawdzać poprawność adresu email.
priority31, 2, 3, 4, 5Priorytet. 1 = najwyższy. 5 = najniższy. 3 = normalny.
crlf \n "\r\n" lub "\n" lub "\r" Znak nowej linii. (Użyj "\r\n" do kompatybilności z RFC 822).
newline\n "\r\n" lub "\n" lub "\r"Znak nowej linii. (Użyj "\r\n" do kompatybilności z RFC 822).
bcc_batch_modeFALSETRUE lub FALSE (boolean)Czy włączyć BCC Batch Mode.
bcc_batch_size200BrakLiczba adresów email w jednym "cyklu" BCC batch.

Opis funkcji klasy Email

$this->email->from()

Ustawia adres email i dane osoby wysyłającej email:

$this->email->from('you@example.com', 'Your Name');

$this->email->reply_to()

Ustawia adres na jaki ma zostać wysłana odpowiedź. Jeśli ta informacja nie jest ustawiona, domyślnie ustawiane są informacje dostarczone za pośrednictwem funkcji "from". Przykład:

$this->email->reply_to('you@example.com', 'Your Name');

$this->email->to()

Ustawia adres/y odbiorcy/ów. Może to być pojedynczy adres email, lista oddzielona przecinkami lub tablica:

$this->email->to('someone@example.com'); $this->email->to('one@example.com, two@example.com, three@example.com'); $list = array('one@example.com', 'two@example.com', 'three@example.com');

$this->email->to($list);

$this->email->cc()

Ustawia adres/y CC. Tak samo jak "to", może to być pojedynczy adres email, lista oddzielona przecinkami lub tablica.

$this->email->bcc()

Ustawia adres/y BCC. Tak samo jak "to", może to być pojedynczy adres email, lista oddzielona przecinkami lub tablica.

$this->email->subject()

Ustawia temat wiadomości email:

$this->email->subject('This is my subject');

$this->email->message()

Ustawia treść wiadomości:

$this->email->message('This is my message');

$this->email->set_alt_message()

Ustawia alternatywną wiadomość:

$this->email->set_alt_message('This is the alternative message');

Jest to opcjonalna wiadomość, która może zostac użyta w sytuacji kiedy wysyłasz email w formacie HTML. Pozwala na określenie alternatywnej wiadomości pozbawionej formatowania HTML, która jest dodawana do nagłówka dla osób, które nie akceptują wiadomości email w formacie HTML. Jeśli nie ustawisz własnej wiadomości, CodeIgniter wykorzysta "normalną" wiadomość, wycinając z niej wcześniej tagi HTML.

$this->email->clear()

Inicjalizuje wszystkie wartości email do pustego stanu. Ta funkcja jest przewidziana do użytku podczas wysyłania wiadomości email za pomocą pętli, pozwala na resetowanie ustawień pomiędzy cyklami.

foreach ($list as $name => $address)
{
    $this->email->clear();

    $this->email->to($address);
    $this->email->from('your@example.com');
    $this->email->subject('Here is your info '.$name);
    $this->email->message('Hi '.$name.' Here is the info you requested.');
    $this->email->send();
}

Jeśli ustawisz parametr na TRUE, zostaną również wyczyszczone wszystkie załączniki:

$this->email->clear(TRUE);

$this->email->send()

Funkcja wysyłająca email. Zwraca TRUE lub FALSE (boolean) w zalezności od sukcesu lub porażki. Dzięki temu może być użyta w warunku:

if ( ! $this->email->send())
{
    // Generate error
}

$this->email->attach()

Pozwala na wysyłke załączników. W pierwszym parametrze oczekuje ścieżki/nazwy pliku. Uwaga: Używaj ścieżki do pliku, nie adresu URL. Aby załączyć więcej niż jeden plik, wywołuj funkcję kilka razy. Przykład:

$this->email->attach('/path/to/photo1.jpg');
$this->email->attach('/path/to/photo2.jpg');
$this->email->attach('/path/to/photo3.jpg');

$this->email->send();

$this->email->print_debugger()

Zwraca ciąg, który zawiera wszystkie wiadomości od serwera, nagłówki email i wiadomość email. Przydatne przy debuggowaniu.

Nadpisywanie zawijania wierszy

Jeśli masz włączone zawijanie wierszy (zalecane dla kompatybilności z RFC 822), może się zdarzyć, że będziesz posiadać w swojej wiadomości email bardzo długi link, który też zostanie "zawinięty", co skutkować będzie tym, że osoba która otrzyma wiadomość, nie będzie mogła w niego kliknąć. CodeIgniter pozwala na ręczne nadpisanie zachowania zawijania wierszy w Twojej wiadomości w ten sposób:

The text of your email that
gets wrapped normally.

{unwrap}http://example.com/a_long_link_that_should_not_be_wrapped.html{/unwrap}

More text that will be
wrapped normally.

Umieść tekst, który nie ma zostać zawinięty pomiędzy znacznikami: {unwrap} {/unwrap}