Zadejte hledaný výraz...

Odeslání e-mailu z PHP5

Jan Kroupa
verified
rating uzivatele
(120 hodnocení)
9. 1. 2011 18:32:37
Ahoj,
je tady někdo, kdo by mi pomohl s následujícím problémem?
Na bezplatném hostingu PHP5.cz jsem si připravil jednoduchý formulář, který se zobrazuje po primitivním přihlášení, ale nemohu rozchodit třídu PHPMAILER CLASS, která by umožňovala zaslat vyplněné údaje z formuláře na můj e-mail.
Na tomto hostingu je vypnuta interní mail funkce, proto se musí k odeslání e-mailů používat externí řešení.
Strávil jsem s tím celou noc, už nemám sílu googlovat. Nehází mi to žádnou chybu. Ale myslím si, že mám špatný odkaz na tu třídu v require - toto je php část souboru problem.php, který je ve stejném (kořenovém) adresáři jako soubory phpmailer.inc.php, smtp.inc.php a timeoutfix.diff.
require("phpmailer.inc.php");
$mail = new PHPMailer();
$mail->CharSet = 'utf-8'; // nastavení kodování e-mailu
$mail->IsSMTP(); // použijeme k odeslání e-mailu SMTP server
$mail->SMTPAuth = true; // je nutná SMTP autorizace
$mail->Host = 'smtp.seznam.cz'; // adresa SMTP serveru
$mail->Username = 'novak'; // uživatelské jméno
$mail->Password = 'mojeheslo'; // uživatelské heslo
$mail->From = 'novak@php5.cz'; // e-mailová adresa odesílatele
$mail->FromName = "Petr Novák"; // celé jméno odesílatele
$mail->AddAddress('test@gmail.com'); // e-mailová adresa příjemce
$mail->Subject = 'První e-mail';
$mail->Body = 'Toto je první e-mail odeslaný pomocí knihovny PHPMailer!';
$mail->WordWrap = 50; // zalomení těla zprávy po 50 znacích
if(!$mail->Send()) {
echo 'Zpráva nebyla odeslána!
';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Zpráva byla úspěšně odeslána!';
}
9. 1. 2011 18:32:37
https://webtrh.cz/diskuse/odeslani-e-mailu-z-php5#reply598329
Zkus pouzit SMTP server, ktery nevyzaduje autorizaci, u seznamu je (myslim) nutna.
SMTP server by ti mel poskytnout provozovatel hostingu - je to dobra zvyklost
9. 1. 2011 19:20:26
https://webtrh.cz/diskuse/odeslani-e-mailu-z-php5#reply598328
Jan Kroupa
verified
rating uzivatele
(120 hodnocení)
9. 1. 2011 19:24:51
Vyzkouším, mám k dispozici smtp mého poskytovatele připojení. A je tedy ten odkaz v require v pořádku? Proč mi to nehlásí žádnou chybu? Díky za reakci.
9. 1. 2011 19:24:51
https://webtrh.cz/diskuse/odeslani-e-mailu-z-php5#reply598327
sh
verified
rating uzivatele
(22 hodnocení)
9. 1. 2011 19:39:25
zkus nad to hodit následující pro ověření
if(file_exists("phpmailer.inc.php")) echo "OK"; else echo "chyba";
pokud ok, soubor tam je, když chyba, soubor tam není.
9. 1. 2011 19:39:25
https://webtrh.cz/diskuse/odeslani-e-mailu-z-php5#reply598326
Jan Kroupa
verified
rating uzivatele
(120 hodnocení)
9. 1. 2011 19:53:19
Díky, sh, soubor tam je. Pročistil jsem to a momentálně stránka vypadá takto:
if(file_exists("phpmailer.inc.php")) echo "OK"; else echo "chyba";
include "phpmailer.inc.php";
$mail = new PHPMailer();
$mail->CharSet = 'utf-8'; // nastavení kodování e-mailu
$mail->IsSMTP(); // použijeme k odeslání e-mailu SMTP server
$mail->Host = 'mail.clnet.cz'; // adresa SMTP serveru
$mail->From = 'novak@php5.cz'; // e-mailová adresa odesílatele
$mail->FromName = "Petr Novák"; // celé jméno odesílatele
$mail->AddAddress('kroupa.jan@email.cz'); // e-mailová adresa příjemce
$mail->Subject = 'První e-mail';
$mail->Body = 'Toto je první e-mail odeslaný pomocí knihovny PHPMailer!';
$mail->WordWrap = 50; // zalomení těla zprávy po 50 znacích
if(!$mail->Send()) {
echo 'Zpráva nebyla odeslána!
';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Zpráva byla úspěšně odeslána!';
}?>
Teď mě napadá, jaká část skriptu vůbec zajišťuje (volá) to samotné odeslání?
9. 1. 2011 19:53:19
https://webtrh.cz/diskuse/odeslani-e-mailu-z-php5#reply598325
sh
verified
rating uzivatele
(22 hodnocení)
9. 1. 2011 20:16:40
a takto jak to máš Ti to něco vypíše? nebo k
if(!$mail->Send()) {
echo 'Zpráva nebyla odeslána!
';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Zpráva byla úspěšně odeslána!';
se to vůbec nedostane?
// jinak to mail->Send() odesílá
9. 1. 2011 20:16:40
https://webtrh.cz/diskuse/odeslani-e-mailu-z-php5#reply598324
Jan Kroupa
verified
rating uzivatele
(120 hodnocení)
9. 1. 2011 20:24:02
No, právě to je ono - vůbec nic mi to nepíše... Nevím, jak mají nastaveno zobrazování chyb a hlášení, možná bych to mohl projet na localhostu, kde mám nastaveno zobrazování všech chybových hlášek...
Ještě dávám jeden odkaz: http://www.php5.cz/index/faq/ a je tam i diskuze...
9. 1. 2011 20:24:02
https://webtrh.cz/diskuse/odeslani-e-mailu-z-php5#reply598323
sh
verified
rating uzivatele
(22 hodnocení)
9. 1. 2011 20:29:32
zkus tohle:
Výpis chyb je defaultně na serveru PHP5.cz vypnut. Pokud chcete při vývoji chyby vypisovat, vytvořte si v adresáři public_html soubor .htaccess a do něj vložte následující řádky:
php_flag display_errors on
php_value error_reporting 6143
pak by to mělo něco vypsat.
9. 1. 2011 20:29:32
https://webtrh.cz/diskuse/odeslani-e-mailu-z-php5#reply598322
Jan Kroupa
verified
rating uzivatele
(120 hodnocení)
9. 1. 2011 20:33:34
Notice: Undefined variable: from in /www/sites/9/site5069/public_html/phpmailer.inc.php on line 517 Notice: Undefined variable: Encoding in /www/sites/9/site5069/public_html/phpmailer.inc.php on line 541 Fatal error: Cannot access empty property in /www/sites/9/site5069/public_html/phpmailer.inc.php on line 541
---------- Příspěvek doplněn 09.01.2011 v 20:34 ----------
Chyba ve třídě?
---------- Příspěvek doplněn 09.01.2011 v 20:35 ----------
Řádek 517: $header[] = $from;
Řádek 541: $header[] = sprintf("Content-Transfer-Encoding: %sn", $this->$Encoding);
9. 1. 2011 20:33:34
https://webtrh.cz/diskuse/odeslani-e-mailu-z-php5#reply598321
sh
verified
rating uzivatele
(22 hodnocení)
9. 1. 2011 23:23:34
teďka téměř jistě píšu blbost, nicméně ji vyzkoušej (nic lepšího mě tady nenapadne)
to tvé 517 a 541 přepiš na
Řádek 517: $header[] = $this->From;
Řádek 541: $header[] = sprintf("Content-Transfer-Encoding: %sn", $this->CharSet); ($ navíc)
9. 1. 2011 23:23:34
https://webtrh.cz/diskuse/odeslani-e-mailu-z-php5#reply598320
Jan Kroupa
verified
rating uzivatele
(120 hodnocení)
9. 1. 2011 23:38:36
Ee, stále to hlásí chybu, byť už jen jednu: Undefined variable: CharSet in /www/sites/9/site5069/public_html/phpmailer.inc.php on line 541 Fatal error: Cannot access empty property in /www/sites/9/site5069/public_html/phpmailer.inc.php on line 541.
Děkuji sh (rep+), ale zítra se podívám po jiném free hostingu, který umí interní mail funkci... Pokud někdy budeš potřebovat pomoc ohledně daní nebo účta, určitě se ozvi... Ještě jednou díky.
9. 1. 2011 23:38:36
https://webtrh.cz/diskuse/odeslani-e-mailu-z-php5#reply598319
Martin
verified
rating uzivatele
(36 hodnocení)
9. 1. 2011 23:48:59
Že by dolar navíc? :)
$header[] = sprintf("Content-Transfer-Encoding: %sn", $this->Encoding);
9. 1. 2011 23:48:59
https://webtrh.cz/diskuse/odeslani-e-mailu-z-php5#reply598318
Jan Kroupa
verified
rating uzivatele
(120 hodnocení)
9. 1. 2011 23:51:48
No, Martine, mám pocit, že přihořívá:
OK Zpráva nebyla odeslána!
Notice: Undefined property: phpmailer::$ErrorInfo in /www/sites/9/site5069/public_html/problem.php on line 20 Mailer Error:
Řádek 20: echo 'Mailer Error: ' . $mail->ErrorInfo;
---------- Příspěvek doplněn 09.01.2011 v 23:54 ----------
Ale po refresh již: OK Notice: Uninitialized string offset: 0 in /www/sites/9/site5069/public_html/smtp.inc.php on line 265 Notice: Uninitialized string offset: 0 in /www/sites/9/site5069/public_html/smtp.inc.php on line 265 Zpráva nebyla odeslána!
Notice: Undefined property: phpmailer::$ErrorInfo in /www/sites/9/site5069/public_html/problem.php on line 20 Mailer Error:
EDIT: E-maily už chodí! Ale se špatnou diakritikou a hláškou o chybě.
9. 1. 2011 23:51:48
https://webtrh.cz/diskuse/odeslani-e-mailu-z-php5#reply598317
sh
verified
rating uzivatele
(22 hodnocení)
10. 1. 2011 00:35:31
phpmailer je fajn věc, mě takto nikdy nezlobil, na mail() budeš nadávat. Máš ""aktuální"" verzi phpmaileru jen tak mimochodem?
Pokud jde o diakritiku, máš ten skript (kódování) v UTF-8?
... za rep a nabídku díky:)
10. 1. 2011 00:35:31
https://webtrh.cz/diskuse/odeslani-e-mailu-z-php5#reply598316
Martin
verified
rating uzivatele
(36 hodnocení)
10. 1. 2011 00:36:56
Hledám k tomu nějaké další info a zdá se mi, že používáš velmi starou verzi té třídy (cca z roku 2001). Třeba by to novější verze vyřešila celé sama.
http://sourceforge.net/projects/phpmailer/files/phpmailer%20for%20php5_6/PHPMailer%20v5.1/
10. 1. 2011 00:36:56
https://webtrh.cz/diskuse/odeslani-e-mailu-z-php5#reply598315
Pro odpověď se přihlašte.
Přihlásit