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