Avaleht
uus teema   vasta Tarkvara »  WWW »  PHP "mailsend" probleem märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
lall
HV vaatleja

liitunud: 16.08.2006




sõnum 30.07.2010 14:47:00 PHP "mailsend" probleem vasta tsitaadiga

Tervist,

Säärane kood sai kokku pandud olemasoleval näidisel.
Probleem selles, et kui ma ei lisa attachmenti siis kogu kupatus läheb teele plain textina ja ilma utf-8'ta.
Kui lisada attachment, siis on kõik superhea.

Kus ma nüüd midagi nii mööda panin?


<?php
// Read POST request params into global vars
$to      = "xxx.xxx@mail.ee";
$from_name    = "xxx";
$from    = "xxx@xxx";
$subject = "Hinnapäring kodulehelt";
$message = "<html>
<body>

<br /><b>Ruumi mõõdud suurus, köögi mõõtmed</b>: ".$_POST["element_1"]."
<br /><b>Mööbli karkass</b>: ".$_POST["element_7"]."
<br /><b>Mööbli nähtav osa</b>: ".$_POST["element_8"]."
<br /><b>Tööpind</b>: ".$_POST["element_9"]."
<br /><b>Taust</b>: ".$_POST["element_16"]."
<br /><b>Uksed</b>: ".$_POST["element_10"]."
<p>
<br /><b>Uste mehhanismid</b>:
<br /><b>Avanevad üles</b>: ".$_POST["element_11_1"]."
<br /><b>Avanevad vasakule paremale</b>: ".$_POST["element_11_2"]."
<br /><b>Muu</b>: ".$_POST["element_11_3"]."
<p>
<br /><b>Käepidemed</b>: ".$_POST["element_12"]."
<br /><b>Sahtliboksid</b>: ".$_POST["element_13"]."
<br /><b>Valamu kuju</b>: ".$_POST["element_14"]."
<br /><b>Valamu materjal</b>: ".$_POST["element_15"]."
<br /><b>Valgustus</b>: ".$_POST["element_17"]."
<br /><b>Tehnika</b>: ".$_POST["element_18"]."
<br /><b>Lisainfo</b>: ".$_POST["element_2"]."
<br /><b>Eesnimi</b>: ".$_POST["element_4_1"]."
<br /><b>Perenimi</b>: ".$_POST["element_4_2"]."
<br /><b>Meiliaadress</b>: ".$_POST["element_5"]."
<br /><b>Telefon</b>: ".$_POST["element_6"]."

</p>
</body>
</html>";

// Generate a boundary string
  $semi_rand = md5(time());
  $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

// Headers
// To send HTML mail, the Content-type header must be set
$headers = "From: ".$from_name." <".$from.">" . "\r\n";
$headers .= "Reply-To: ".$from_name." <".$from.">" . "\r\n";
$headers .= "Date: ".date("r") . "\r\n";

// Additional headers
$headers .= "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-Type: multipart/alternative; boundary=\"PHP-alt-" . $semi_rand . "\"\r\n";
$headers .= "Message-Id: <" . md5(uniqid(microtime())) . "@" . $_SERVER["SERVER_NAME"] . ">\r\n";

// Obtain file upload vars
$fileatt      = $_FILES['fileatt']['tmp_name'];
$fileatt_type = $_FILES['fileatt']['type'];
$fileatt_name = $_FILES['fileatt']['name'];

$headers = "From: $from";

if (is_uploaded_file($fileatt)) {
  // Read the file to be attached ('rb' = read binary)
  $file = fopen($fileatt,'rb');
  $data = fread($file,filesize($fileatt));
  fclose($file);

  // Add the headers for a file attachment
  $headers .= "\nMIME-Version: 1.0\n" .
              "Content-Type: multipart/mixed;\n" .
              " boundary=\"{$mime_boundary}\"";

  // Add a multipart boundary above the plain message
  $message = "This is a multi-part message in MIME format.\n\n" .
             "--{$mime_boundary}\n" .
             "Content-Type: text/html; charset=\"UTF-8\"\n" .
             "Content-Transfer-Encoding: 7bit\n\n" .
             $message . "\n\n";

  // Base64 encode the file data
  $data = chunk_split(base64_encode($data));

  // Add file attachment to the message
  $message .= "--{$mime_boundary}\n" .
              "Content-Type: {$fileatt_type};\n" .
              " name=\"{$fileatt_name}\"\n" .
              //"Content-Disposition: attachment;\n" .
              //" filename=\"{$fileatt_name}\"\n" .
              "Content-Transfer-Encoding: base64\n\n" .
              $data . "\n\n" .
              "--{$mime_boundary}--\n";
}

// Send the message
$ok = @mail($to, $subject, $message, $headers);
if ($ok) {
  echo "<p>Mail sent! Yay PHP!</p>";
}
else {
  echo "<p>Mail could not be sent. Sorry!</p>";
}
?>
Kommentaarid: 1 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 1
tagasi üles
vaata kasutaja infot saada privaatsõnum
Valdars
HV veteran
Valdars

liitunud: 22.02.2003




sõnum 30.07.2010 15:49:04 vasta tsitaadiga

"Content-Type: text/html; charset=\"UTF-8\"\n" .

See osa peaks maili saatma UTF-8 HTML-ina. Millegipärast on see faili kaasapanekut kontrolliva if-lause sees. Proovi see ettepoole tõsta.
Kommentaarid: 47 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 44
tagasi üles
vaata kasutaja infot saada privaatsõnum
lall
HV vaatleja

liitunud: 16.08.2006




sõnum 30.07.2010 17:26:31 vasta tsitaadiga

Kõige ilmselgem jääb ju alati kahe silma vahele.
Saad aru, ma olen 2 päeva jutti seda korda üritanud saada..

Nüüd läheb meil teele html'ina ja utf-8 kodeeringuga, kuid üks kummaline asi o siiski.
Kiri on märgitud "kirjaklambriga" isegi siis kui manust pole.
See pole küll väga häiriv asjaolu, pigem prof. huvi.


<?php
// Read POST request params into global vars
$to      = "xxx@mail.ee";
$from_name    = "xxx";
$from    = "xxx";
$subject = "Hinnapäring kodulehelt";
$message = "<html>
<body>

<br /><b>Ruumi mõõdud suurus, köögi mõõtmed</b>: ".$_POST["element_1"]."
<br /><b>Mööbli karkass</b>: ".$_POST["element_7"]."
<br /><b>Mööbli nähtav osa</b>: ".$_POST["element_8"]."
<br /><b>Tööpind</b>: ".$_POST["element_9"]."
<br /><b>Taust</b>: ".$_POST["element_16"]."
<br /><b>Uksed</b>: ".$_POST["element_10"]."
<p>
<br /><b>Uste mehhanismid</b>:
<br /><b>Avanevad üles</b>: ".$_POST["element_11_1"]."
<br /><b>Avanevad vasakule paremale</b>: ".$_POST["element_11_2"]."
<br /><b>Muu</b>: ".$_POST["element_11_3"]."
<p>
<br /><b>Käepidemed</b>: ".$_POST["element_12"]."
<br /><b>Sahtliboksid</b>: ".$_POST["element_13"]."
<br /><b>Valamu kuju</b>: ".$_POST["element_14"]."
<br /><b>Valamu materjal</b>: ".$_POST["element_15"]."
<br /><b>Valgustus</b>: ".$_POST["element_17"]."
<br /><b>Tehnika</b>: ".$_POST["element_18"]."
<br /><b>Lisainfo</b>: ".$_POST["element_2"]."
<br /><b>Eesnimi</b>: ".$_POST["element_4_1"]."
<br /><b>Perenimi</b>: ".$_POST["element_4_2"]."
<br /><b>Meiliaadress</b>: ".$_POST["element_5"]."
<br /><b>Telefon</b>: ".$_POST["element_6"]."

</p>
</body>
</html>";

// Generate a boundary string
  $semi_rand = md5(time());
  $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

// Headers
// To send HTML mail, the Content-type header must be set
$headers = "From: ".$from_name." <".$from.">" . "\r\n";
$headers .= "Reply-To: ".$from_name." <".$from.">" . "\r\n";
$headers .= "Date: ".date("r") . "\r\n";

// Additional headers
$headers .= "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-Type: multipart/alternative; boundary=\"PHP-alt-" . $semi_rand . "\"\r\n";
$headers .= "Message-Id: <" . md5(uniqid(microtime())) . "@" . $_SERVER["SERVER_NAME"] . ">\r\n";

// Obtain file upload vars
$fileatt      = $_FILES['fileatt']['tmp_name'];
$fileatt_type = $_FILES['fileatt']['type'];
$fileatt_name = $_FILES['fileatt']['name'];

$headers = "From: $from";

// Add the headers for a file attachment
  $headers .= "\nMIME-Version: 1.0\n" .
              "Content-Type: multipart/mixed;\n" .
              " boundary=\"{$mime_boundary}\"";

  // Add a multipart boundary above the plain message
  $message = "This is a multi-part message in MIME format.\n\n" .
             "--{$mime_boundary}\n" .
             "Content-Type: text/html; charset=\"UTF-8\"\n" .
             "Content-Transfer-Encoding: 7bit\n\n" .
             $message . "\n\n";


if (is_uploaded_file($fileatt)) {
  // Read the file to be attached ('rb' = read binary)
  $file = fopen($fileatt,'rb');
  $data = fread($file,filesize($fileatt));
  fclose($file);
 
  // Base64 encode the file data
  $data = chunk_split(base64_encode($data));

  // Add file attachment to the message
  $message .= "--{$mime_boundary}\n" .
              "Content-Type: {$fileatt_type};\n" .
              " name=\"{$fileatt_name}\"\n" .
              //"Content-Disposition: attachment;\n" .
              //" filename=\"{$fileatt_name}\"\n" .
              "Content-Transfer-Encoding: base64\n\n" .
              $data . "\n\n" .
              "--{$mime_boundary}--\n";
}

// Send the message
$ok = @mail($to, $subject, $message, $headers);
if ($ok) {
  echo "<p>Mail sent! Yay PHP!</p>";
}
else {
  echo "<p>Mail could not be sent. Sorry!</p>";
}
?>
Kommentaarid: 1 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 1
tagasi üles
vaata kasutaja infot saada privaatsõnum
Celos
Kreisi kasutaja
Celos

liitunud: 23.08.2005




sõnum 31.07.2010 02:51:37 vasta tsitaadiga

OT: Sul maili sisus üks <p> tag sulgemata icon_razz.gif
Kommentaarid: 16 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 15
tagasi üles
vaata kasutaja infot saada privaatsõnum
karu
HV kasutaja

liitunud: 08.08.2002




sõnum 31.07.2010 03:11:28 vasta tsitaadiga

lall kirjutas:
Nüüd läheb meil teele html'ina ja utf-8 kodeeringuga, kuid üks kummaline asi o siiski.
Kiri on märgitud "kirjaklambriga" isegi siis kui manust pole.

seda teeb multipart/mixed.

ja mida peab '$headers = "From: $from";' tegema ?
Kommentaarid: 1 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 1
tagasi üles
vaata kasutaja infot saada privaatsõnum
lall
HV vaatleja

liitunud: 16.08.2006




sõnum 02.08.2010 08:22:11 vasta tsitaadiga

Oh tänud jällegi, kood kubiseb veel vigadest, aga toimib.
Kommentaarid: 1 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 1
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 02.08.2010 08:38:56 vasta tsitaadiga

Eesmärgiks on iseõppimine emaili saatmisel?
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
lall
HV vaatleja

liitunud: 16.08.2006




sõnum 02.08.2010 08:55:54 vasta tsitaadiga

Iseõppimine kindlasti - PHP on millegipärast jäänud minu teadmistepagasist välja.
Aga tegelikult läheb koodijupp perefirma kodukale.
Arvad, et andmete saatmine peaks mööda turvalisemat kanalit liikuma?
Kommentaarid: 1 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 1
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 02.08.2010 10:22:33 vasta tsitaadiga

Ei, pigem mõtlen et kui production värk, siis soovitaks parem a'la Swift Mailerit või PHPMailerit.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
lall
HV vaatleja

liitunud: 16.08.2006




sõnum 02.08.2010 10:37:39 vasta tsitaadiga

Tänud, vaatan asja üle.
Tundub, et ülesehitus on märksa lihtsam ja loogilisem küll.
Kommentaarid: 1 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 1
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  WWW »  PHP "mailsend" probleem
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.