Diskuze: Chyba v odeslání emailu (jQuery & PHP)
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Nezkoušel jsem to, ale... víš, že ti chybí apostrof u
$errors['price'] = Cenu je nutné vyplnit.';
, že ano?
Funkci mail() bych vůbec nedoporučoval používat a použil bych PHPMailer,
který se dá dost rozumně použít na prakticky cokoliv a je
user-friendly.
Nepíše to nějaké chyby? Kde se to pokoušíš spustit? Na localu to nebude
fungovat, pokud jsi si nezprovoznil mailserver (a i stejně tak to bude fungovat
jen pro lokální mail, pokud nebudeš mít něco jako SMTP relay).
Spouštím to na doméně.
Píše to jen chybu která se má napsat pokud nebude empty($errors). Apostrof u sebe v kódu mám.
Používej tlačítko odpovědět!
No a co error log na hostingu? Nebo použij PHPmailer a on ti tu chybu řekne...
(myslím)
A nepřišlo ti to do spamu? To se často stává, třeba na můj Gmail se už
ani nepokouším nic posílat automaticky, protože ze všech těch testů si
můj server blacklistnul a já s tím nemuzu nic udělat . Takže si to zkus poslat na
něco hloupějšího, třeba nějaký temp mail nebo seznam, co buď filtry
nemají vůbec nebo jsou nejsou tak vychytralé.
BTW, je to normální hosting, nebo si to spravuješ sám na nějakém VPS?
Bez chyby ti tezko nekdo poradi.
Tak jsem použil PHPMailer ale moc jsem nepochodil. Aspoň že to ukazuje ty chyby.
Fatal error: Uncaught Error: Class 'PHPMailer' not found in /data/web/virtuals/xxxxx/virtual/www/index.php:7 Stack trace: #0 {main} thrown in /data/web/virtuals/xxxxx/virtual/www/index.php on line 7
Kód mám:
if(isset($_POST['odeslat'])){
require "PHPmailer/src/PHPMailer.php";
require "PHPmailer/src/SMTP.php";
$mail = new PHPMailer(true); // Passing `true` enables exceptions
try {
//Server settings
$mail->SMTPDebug = 2; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp-xx.mxx.wedos.net'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '[email protected]'; // SMTP username
$mail->Password = 'xx'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
//Recipients
$mail->setFrom('[email protected]', 'Mailer');
$mail->addAddress('[email protected]', 'Někdo'); // Add a recipient
//Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}
}
Použil jsem kód přímo z gitu tam bylo přidáno ještě toto ale nemůžu se dobádat co je "vendor/autload.php" a řádek s use mi vyhazuje chybu:
use PHPMailer\PHPMailer\PHPMailer;
require '../vendor/autoload.php';
chyba s use
Parse error: syntax error, unexpected 'use' (T_USE) in /data/web/virtuals/xxx/virtual/www/index.php on line 3
Vendor je složka, kam se ukládají knihovny třetí stran typicky je tam
dává composer.
Doporučil bych ti to nainstalovat přes composer; jestli ho neumíš
používat, nauč se ho, je to extrémně užitečná věc. A je úplně ok mít
composer jen pro jednu dependency.
Dobře. Hosting mám u wedosu takže tam stačí když do root složky (/) dám composer.json a composer.lock ?
Zobrazeno 8 zpráv z 8.