Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Zend_Mail + odnośniki
Forum PHP.pl > Forum > PHP > Frameworki
Astarot
Witam,
Mam następujący problem z Zend_Mail:
Próbuję wysłać wiadomość email zawierającą kod html, w tym odnośniki <a href=..
Jednak po wysłaniu emaila i odebraniu go na skrzynce nie wszystkie linki są "klikalne".
W podglądzie kodu źródłowego otrzymanego emaila widzę, że odnośnik nie jest poprawnie kodowany
a wygląda to mniej więcej tak:

  1. <a href=3D"/sciezka/plik.txt"...


Dodawany jest kod 3D uniemożliwiający prawidłową interpretację.

Całość dzieje się dla kodowania

  1. Content-Transfer-Encoding: quoted-printable


natomiast wiadomość z kodowaniem

  1. Content-Transfer-Encoding: multipart/related


w źródle emaila wygląda dobrze, jednak w samym emailu też nie działa.

dodam jeszcze standardowy kod którym wysyłam maila

  1. $mail = new Zend_Mail('UTF-8');
  2. $mail->setBodyHtml($content);
  3. $mail->setFrom('od_kogo', 'od_kogo');
  4. $mail->addTo($email);
  5. $mail->setSubject($subject);
  6. $mail->send();


Eksperymentowałem z $mail->setType.. ale bez rezultatów jak do tej pory

Czy ktoś może spotkał się z tym problemem?
morthan
A jak tworzysz treść maila?

Ja robię to tak:

  1. $bodyHtml = <<<BODY
  2.  
  3. <a href="{$jakas_zmienna}">z adresem</a>
  4.  
  5. BODY;
  6.  
  7. $mail->setBodyText($bodyHtml);


Nie zapomnij $bodyHtml docisnąć to lewego marginesu dokumentu.

EDIT: literówka tongue.gif
Astarot
Dodaje tagi html standardowo jak w manualu zf

  1. $mail->setBodyHtml('Jakiś <b>tekst</b> html <a href="/sciezka/x.jpg">etykieta</a>.....');
morthan
Spróbuj napisać tak jak Ci mówię. Wygeneruj całą treść i ją wstaw jako body za pomocą:
  1. setBodyText()
.

Na koniec:

  1. $mail->send();


i po sprawie.
Mi tak działa pięknie i nie mam żadnych problemów z linkami w mailach.
Astarot
SetBodyText() nie służy wysyłania emaili w formacie HTML, po tej zmianie wypluwa mi w skrzynce cały kod html jako zwykły tekst.
morthan
Przepraszam, masz rację. Odgrzebałem tą funkcję i zgadza się. Nadpisałem setBodyHtml() tą funkcją.Upraszczając, tworzę cały tekst wiadomości wcześniej z całymi linkami tak jak pisałem wyżej, a potem wpisuję ją w treść wiadomości.
Spróbuj tak zrobić i napisz czy Ci działa jak chcesz.
Astarot
Wciąż nie rozwiązałem problemu, jakieś pomysły?
ersonic
Pod kazdym klientem poczty to wystepuje ja miałem podbny problem ale tylko pod thunderbird
Ja strsuje coś takiego przy wysyłkach HTML z grafikami
$_htmlResultNewPass = '<a href="http://example.com">tekst</a>';

$oMailCahngePassword = new Zend_Mail('UTF-8');
$oMailCahngePassword->setHeaderEncoding(Zend_Mime::ENCODING_BASE64);
$oMailCahngePassword->setBodyHtml($_htmlResultNewPass);
..
$oMailCahngePassword->send();

Działa bez problemu
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.