| 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: 12 let
|
|||
0