Autor | Zpráva | ||
---|---|---|---|
drak Profil * |
#1 · Zasláno: 16. 3. 2013, 23:20:29 · Upravil/a: drak
Dobrý večer,
řeším problém odesílání mailu s přílohou (popř. přílohami) a CZ znaky. Script který mám odešle mail s přílohou ale někde zapomene obsah mailu, reps. on přijde, ale nezobrazuje se :( Řešení: $attachment_name = 'php.zip'; $fp = FOpen ($attachment_name, 'r'); $contents = FRead ($fp, FileSize($attachment_name)); $contents = Chunk_Split(Base64_Encode($contents)); FClose ($fp); $address = 'cvrcek.jiri@gmail.com'; $subject = 'Email s prilohou'; $headers = "From: TestMail <test@ccomp.eu>\n"; $headers .= "Reply-To: <test@ccomp.eu>\n"; $headers .= "MIME-Version: 1.0\n"; $headers .= "Content-Type: multipart/mixed; boundary=\"" ."----=MIME_BOUNDRY_main_message\"\n"; $headers .= "X-Sender: TestMail <test@ccomp.eu>\n"; //$headers .= "X-Mailer: PHP\n"; //$headers .= "X-Priority: 3\n"; //Priorita emailu 1 = Urgentni, 3 = Normalni $headers .= "Return-Path: <test@ccomp.eu>\n"; $headers .= "This is a multi-part message in MIME format.\n"; $headers .= "------=MIME_BOUNDRY_main_message \n"; $headers .= "Content-Type: multipart/alternative; boundary=\"" ."----=MIME_BOUNDRY_message_parts\"\n"; $message = "\n------=MIME_BOUNDRY_message_parts\n"; $message .= "Content-Type: text/plain; charset=\"windows-1250\"\n"; $message .= "Content-Transfer-Encoding: quoted-printable\n"; $message .= "\n"; $message .= "\n"; $message .= "\n"; $message .= "\n------=MIME_BOUNDRY_message_parts--\n"; $message .= "SEM MUZETE ZADAT TEXT EMAILU \n"; $message .= "------=MIME_BOUNDRY_main_message\n"; $message .= "Content-Type: application/octet-stream;\n\tname=\"" . $attachment_name . "\"\n"; $message .= "Content-Transfer-Encoding: base64\n"; $message .= "Content-Disposition: attachment;\n\tfilename=\"" . $attachment_name . "\"\n\n"; $message .= $contents; //Zakodovana priloha $message .= "\n"; $message .= "------=MIME_BOUNDRY_main_message--\n"; //ODESLANI EMAILU if (mail($address, $subject, $message, $headers)) { print 'Email byl úspěšně odeslán.'; } else { print 'Došlo k chybě!'; } Vyřešeno ;) |
||
Alphard Profil |
#2 · Zasláno: 17. 3. 2013, 00:03:05
drak:
„Vyřešeno ;)“ Občas se někdo ptá na stejný problém, bylo by užitečné, kdybyste sem napsal, v čem byl problém (ideálně uvedl funkční řešení). |
||
drak Profil * |
#3 · Zasláno: 17. 3. 2013, 19:29:18 · Upravil/a: drak
Funkčnější řešením bylo stažení PHPMailer v5.1 a pročtení jeho dokumentace. :)
Pomocí funkce mail() a napsáním vlastních hlaviček buď nechodila příloha, nebo obsah zprávy, či to padalo do spamu a nebo to nedorazilo vůbec, ale uspokojující výsledek nikdy. Řešení: require "./phpmailer/class.phpmailer.php"; $mail = new PHPMailer(); $mail->IsSMTP(); // k odeslání e-mailu použijeme SMTP server $mail->Host = "xxx.xxx.xx"; // zadáme adresu SMTP serveru $mail->SMTPAuth = false; // nastavíme true v případě, že server vyžaduje SMTP autentizaci $mail->Username = "jmenouzivatele"; // uživatelské jméno pro SMTP autentizaci $mail->Password = "heslo"; // heslo pro SMTP autentizaci $mail->From = $_POST['od']; // adresa odesílatele skriptu $mail->FromName = "Mailer Test"; // jméno odesílatele skriptu (zobrazí se vedle adresy odesílatele) $mail->AddAddress($_POST['komu']); // přidáme příjemce $mail->Subject = $_POST['predmet']; // nastavíme předmět e-mailu $mail->Body = $_POST['zprava']; $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 $mail->AddAttachment("./php.zip", "php-example.zip"); 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.'; } |
||
Časová prodleva: 11 let
|
0