Autor | Zpráva | ||
---|---|---|---|
miro84 Profil * |
#1 · Zasláno: 20. 6. 2014, 13:23:28
Zdravím všechny,
moooooc prosím o pomoc. Mám v xml souboru seznam příjemcu a příloh, které musím odeslat. Použil jsem phpmailer a vše vypadá, že funguje až na jednu věc. Pošle se mi zpráva a příloha jen na první email v seznamu. Potřebuji, aby phpmailer odeslal zprávu s přílohou na všechny adresy jednu po druhé. Vím, že stačí trochu hledat a něco se naučit, ale musím to nutně dnes poslat a už mi z toho hrabe :-). Moc proto prosím, poradí někdo jak to udělat? kod: <?php //načtení xml souboru $xml = simplexml_load_file("seznam.xml"); //přiřazení proměnných foreach ($xml->Table1 as $v) { $email = $v->email; $from = "info@xxxxx.cz"; $subj = "Faktura za služby"; $priloha = $v->priloha; $body = "Vážený zákazníku, fakturujeme Vám ..................."; require "class.phpmailer.php"; $mail = new PHPMailer(); $mail->IsSMTP(); // k odeslání e-mailu použijeme SMTP server $mail->Host = "smtp-xxx.net"; // zadáme adresu SMTP serveru $mail->SMTPAuth = true; // nastavíme true v případě, že server vyžaduje SMTP autentizaci $mail->Username = "info@xxxxx.cz"; // uživatelské jméno pro SMTP autentizaci $mail->Password = "xxxxxx"; // heslo pro SMTP autentizaci $mail->From = "info@xxxxxx.cz"; // adresa odesílatele skriptu $mail->FromName = "xxxxxx a.s."; // jméno odesílatele skriptu (zobrazí se vedle adresy odesílatele) $mail->AddAddress($email); // přidáme příjemce $mail->IsHTML(true); // bude to HTML e-mail $mail->Subject = "Faktura za služby"; // nastavíme předmět e-mailu // nastavíme HTML tělo e-mailu $mail->Body = "Vážený zákazníku, fakturujeme Vám ..................."; // nastavíme textové tělo e-mailu $mail->AltBody = "Vážený zákazníku, fakturujeme Vám ..................."; $mail->WordWrap = 50; // je vhodné taky nastavit zalomení (po 50 znacích) $mail->CharSet = "utf-8"; // nastavíme kódování, ve kterém odesíláme e-mail // vložíme první soubor $mail->AddAttachment("$priloha"); if(!$mail->Send()) { // odešleme e-mail echo 'Došlo k chybě při odeslání e-mailu.'; echo 'Chybová hláška: ' . $mail->ErrorInfo; } else { echo 'E-mail byl v pořádku odeslán.'; } } ?> |
||
Joker Profil |
#2 · Zasláno: 20. 6. 2014, 14:20:27
miro84:
U těch dalších to vypíše chybu, nebo neudělá nic? |
||
miro84 Profil * |
#3 · Zasláno: 20. 6. 2014, 14:25:32
Joker:
Ano Fatal error: Cannot redeclare class phpmailerException in /data/web/virtuals/66862/virtual/www/class.phpmailer.php on line 3414 |
||
Kcko Profil |
#4 · Zasláno: 20. 6. 2014, 14:31:43
require "class.phpmailer.php";
bud nahradit za require_once nebo uplně vyhodit z cyklu a dát to někam nad to. |
||
miro84 Profil * |
#5 · Zasláno: 20. 6. 2014, 14:38:38
Kcko:
Pomohla náhrada... Moc díky. |
||
Joker Profil |
#6 · Zasláno: 20. 6. 2014, 14:53:57
Kcko [#4]:
Anebo udělat obojí :-) Dát require na začátek je každopádně lepší (i require_once minimálně musí zkontrolovat, jestli se ten soubor už vložil, což je zbytečná činnost v každém cyklu) a když se má dělat jen jednou, tak pro jistotu require_once. |
||
Kcko Profil |
Joker:
require_once jsem napsal schválně, protože neznám kontext skriptu a bůhví kam by to miro84 dal ;) a vznikaly by tu další otázky.
Obojí asi ne, ne? K čemu by to bylo dobré? :) |
||
Joker Profil |
#8 · Zasláno: 20. 6. 2014, 15:57:31
Kcko:
„Obojí asi ne, ne? K čemu by to bylo dobré? :)“ Hodí se, pokud se celý ten soubor později vloží někam jinam. Jelikož ten soubor obsahuje definici třídy a v libovolném skriptu může být maximálně jednou, klidně bych tam require_once dal. |
||
Časová prodleva: 10 let
|
0