Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]PHPMailer - strona html zamiast komunikatu
Forum PHP.pl > Forum > Przedszkole
edgar2005
Co należy wpisać w poniższym kodzie, aby zamiast komunikatu "mail sent" po wysłaniu maila wyświetlała się strona html.
Z góry dziękuje za odpowiedz. Pozdrawiam!

Kod
         <?  
            require("phpmailer/class.phpmailer.php");
              $mail = new PHPMailer();
            
            $mail->PluginDir = "phpmailer/";
            $mail->From     = "NASZE@KONTO"; <b>//adres naszego konta</b>
             $mail->FromName = "phpMailer tester";<b>//nagłówek From</b>
            $mail->Host     = "NASZ.SERWER.SMTP";<b>//adres serwera SMTP</b>
            $mail->Mailer   = "smtp";
            $mail->Username = "tester@KONTO";<b>//nazwa użytkownika</b>
            $mail->Password   = "HASLO";<b>//nasze hasło do konta SMTP</b>
            $mail->SMTPAuth     = true;
            $mail->SetLanguage("en", "phpmailer/language/");
            
            $mail->Subject       = "Mail testowy";<b>//temat maila</b>
          
            // <b>w zmienną $text_body wpisujemy treść maila</b>
            $text_body  = "Cześć, chyba phpMailer działa \n\n";
            $text_body .= "Na zawsze Twój, \n";
            $text_body .= "PHPMailer";
            
            $mail->Body    = $text_body;
            // <b>adresatów dodajemy poprzez metode 'AddAddress'</b>
            $mail->AddAddress("jurek@gdziestam.pl","Jurek");
            $mail->AddAddress("franek@gdziestam.pl","Franek");
            
            if(!$mail->Send())
              echo "There has been a mail error
          ";
              echo $mail->ErrorInfo."
          ";
            
            // Clear all addresses and attachments
            $mail->ClearAddresses();
            $mail->ClearAttachments();
            echo "mail sent
          ";
            
            ?>
nospor
po pierwsze: popraw tytul o znacznik zgodnie z zasadami forum przedszkole
po drugie: wlacz szare komorki.
zamiast: echo "mail sent";
daj: echo "Twoja strona html"; a dokladnie ma tam byc twoj kod html
edgar2005
Ale kiedy wpiszę np.
Kod
     <html>
     <head>
<title>Tytuł<title>
     </head>
     <body>
     ....
     <img src="obrazek.jpg">
     ....
     </body>
     </html>

to w linijce w której jest wstawienie obrazka wywala błąd, to samo dzieje się przy próbie wstawinia tabeli.
Stronę wyświetla dobrze tylko kiedy znajduje się na niej sam tekst.
nospor
no ba, bo nie mozna tworzyc takich konstrukcji:
  1. <?php
  2. echo "cos tu apostrof" a tu dalej cos";
  3. ?>

Powinno byc:
  1. <?php
  2. echo "cos tu apostrof\" a tu dalej cos";
  3. //albo
  4. echo 'cos tu apostrof" a tu dalej cos';
  5. ?>

Ale to wszystko jest manualu w dziale Napisy czy jakos tak.

A najlepiej zrob tak:
  1. <?php
  2. //tu kod php
  3.  
  4. //a tu ponizej zamiast walic echo "html" to zamknij php i rozpocznij html
  5. ?>
  6. <html>
  7.  <head>
  8. <title>Tytuł<title>
  9.  </head>
  10.  <body>
  11.  ....
  12.  <img src="obrazek.jpg">
  13.  ....
  14.  </body>
  15.  </html>
kuba749
spróbój zamiast <img src="obrazek.jpg"> tak <img src='obrazek.jpg'>
edgar2005
Zrobiłem tak jak poradził mi nospor (tyle że najpierw wrzuciłem html a dopiero pod nim php) i sprawdziłem działanie w programie WebServ, wszystko było super.
Ale kiedy wrzuciłem stronę na serwer ovh.org i spróbowałem odpalić pokazał się komunikat:

Kod
   Warning:  require(phpmailer/class.phpmailer.php) [function.require]: failed to open stream: No such file or directory in /home/p/r/i/prizee-poradnik/www/aaaa/phpdoc/wyslij.php on line 192
      
   Fatal error:  require() [function.require]: Failed opening required 'phpmailer/class.phpmailer.php' (include_path='.:') in /home/p/r/i/prizee-poradnik/www/aaaa/phpdoc/wyslij.php on line 192

i nie wysyła maila.
W pliku wyslij.php w lini 192 znajduje się
Kod
         require("phpmailer/class.phpmailer.php");

Co może być nie tak. Pozdrawiam!
nospor
no a przegrales phpmailer? phpmailer/class.phpmailer.php ?
Do tego samego katalogu co odpalasz wyslij.php ?
edgar2005
Tak, folder phpmailer znajduje się w tym samym katalogu co wyślij.php.
Przerzuciłem wszystko tak jak miałem w WebServ, a mimo wszystko przestało działać.
nospor
No to dalej:
Czy wyslij.php jest plikiem glownym ktory odpalasz, czy tez moze jest on dopiero includowany przez inny plik, ktory lezy w innym katalogu?

A czy na pewno w katalogu masz phpmailer/class.phpmailer.php? A moze masz: PHPMailer/class.phpmailer.php ? Pamietaj ze wielkosc liter ma duze znaczenie.
edgar2005
Rzeczywiście problemem była wielkość liter.
Dziękuje za pomoc. Pozdrawiam!
bodek71
podłącze się do tematu w jaki sposób dołączyć kod (phpmailer)do pliku który wykorzystuje biblioteki smart (normalne znaczniki <? /?> nie działają - jest błąd)

poniżej część kodu (tworzy e-mail) który chciałbym zamienić na kod phpmailer

if($dane_ok) {
$zapytanie = mysql_query("INSERT INTO `uzytkownicy` ( `id` , `login` , `haslo` , `plec` , `miejscowosc` , `imie` , `nazwisko` , `email` , `admin` , `active` ) VALUES (0, '$login', '".md5($haslo)."', $plec, '$miejscowosc', '$imie', '$nazwisko', '$email', 0, 0);");
if($zapytanie) {
$zapytanie = mysql_query("SELECT * FROM uzytkownicy WHERE login = '$login';");
$wynik = mysql_fetch_array($zapytanie);
$user_id = $wynik['id'];
$zapytanie = mysql_query("INSERT INTO `poczekalnia` ( `id` , `user_id` , `hash` ) VALUES (0, $user_id, '".(md5($email))."');");
if($zapytanie) {
$zapytanie = mysql_query("SELECT * FROM ustawienia LIMIT 1");
$zmienne = mysql_fetch_array($zapytanie);

$link_aktywacyjny = $zmienne['serwis_url']."_aktywuj,konto/".md5($email).'/';
$tresc = '<!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 4.0 transitional//EN">
<html><head><meta http-equiv="Content-Typ!" content="text/html; charset=iso-8859-2"></head>
<body bgcolor="#ffffff"><font face="Arial" style="font-size:13px;" color="#3e3e3e">'.nl2br(($zmienne['email_potwierdzenie'])).'</font></body></html>';

$headers = "Return-Path: <".$zmienne['admin_email'].">\r\n";
$headers = "MIME-Version: 1.0 \r\n";
$headers .= "Content-type: text/html; charset=iso-8859-2 \r\n";
$headers .= 'From: "Administrator" <'.$zmienne['admin_email'].'>\r\n';
$headers .= 'Reply-To: "'.$zmienne['admin_email'].'" \r\n';
$headers .= 'X-Priority: 1\r\n';
$headers .= 'X-MSMail-Priority: High\r\n';

$tresc = strtr($tresc, "\xA5\x8C\x8F\xB9\x9C\x9F", "\xA1\xA6\xAC\xB1\xB6\xBC");
$tresc = str_replace("{login}",$login,$tresc);
$tresc = str_replace("{haslo}",$haslo,$tresc);
$tresc = str_replace("{imie}",$imie,$tresc);
$tresc = str_replace("{link_aktywacyjny}",$link_aktywacyjny,$tresc);
$tresc = str_replace("{serwis_url}",$zmienne['serwis_url'],$tresc);

mail($email,$zmienne['serwis_url']." - Aktywacja konta",$tresc,$headers);
mkdir("uzytkownicy/$login", 0777);
}
}
}
else {

/* ------------------------------------------------------------------- */

$smarty -> assign('login_blad', $login_blad);
if(isset($_POST['login']))
$smarty -> assign('login', $_POST['login']);

$smarty -> assign('haslo_blad', $haslo_blad);

$smarty -> assign('imie_blad', $imie_blad);
if(isset($_POST['imie']))
$smarty -> assign('imie', $_POST['imie']);

$smarty -> assign('nazwisko_blad', $nazwisko_blad);
if(isset($_POST['nazwisko']))
$smarty -> assign('nazwisko', $_POST['nazwisko']);

$smarty -> assign('miejscowosc_blad', $miejscowosc_blad);
if(isset($_POST['miejscowosc']))
$smarty -> assign('miejscowosc', $_POST['miejscowosc']);

$smarty -> assign('email_blad', $email_blad);
if(isset($_POST['email']))
$smarty -> assign('email', $_POST['email']);

/* ------------------------------------------------------------------- */
}

/* ------------------------------------------------------------------- */

$smarty -> display('rejestracja.tpl');

/* ------------------------------------------------------------------- */
?>
jeżeli kolega nospar wyraziłby swoje sugestie z góry dziekuję za pomoc
nospor
po pierwsze: uzywaj bbcode!
po drugie: co ty chcesz zrobic? tresc maila masz w szablonie smarty? To uzyj fetch() (wiecej info w manualu smarty)
bodek71
w sumie zainteresowałem się phpmailer ponieważ obecny kod we współpracy z qmail na home.pl powoduje

1 odbiorca dostaje e-mail w którym treść jest pomieszana z kodem HTML
2 niezależnie co wipszę w nagłówek FROM i tak odbiorca otrzma list z wpisanym adresem pocztowym mojego konta na home.pl

na tym forum poradzono mi żebym zainstalował phpmailer-a.

ta część kodu jest wycięta z pliku o nazwie rejestracja.inc.php i to ten plik jest odowiedzialny za przetworzenie informacji z formularza i wysłanie pod podany adres linku aktywacyjnego do klienta.

Ponieważ męczę się z tym problemem od miesiąca na różne sposoby zaczynam szukać innych rozwiązań

wiem że jeżeli dołożę kod w znacznikach <? ?> to na stronie wyświetlany jest błąd zastanawiam się jak go dołączyć do pliku rejestracja.inc.php
Cezar708
Cytat(bodek71 @ 18.01.2008, 14:15:12 ) *
1 odbiorca dostaje e-mail w którym treść jest pomieszana z kodem HTML
2 niezależnie co wipszę w nagłówek FROM i tak odbiorca otrzma list z wpisanym adresem pocztowym mojego konta na home.pl


być może Twój problem jest związany z tym topikiem. Kiedyś też miałem problem z "treścią przemieszaną z kodem HTML". Poczytaj może Ci się wyjaśni coś.
bodek71
coś podobnego próbowałem wysyłanie e-mail ze strony www na home.pl działa tylko z \r natomiast \n i \r\n nie działa ale spróbuję jeszcze raz

zazdroszczę rozwiązania 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.