Mr T Medlem sedan maj 2007 1 061 inlägg Frågan 11 maj 2010 07:44 #1 Hittade ett gammalt formulär script där man kan skicka med bifogad fil (vilket har efterfrågats). En bra grund för den som vill skicka med bifogade filer i e-mail .
Det består av 2 filer. En grafisk fil och en program fil.
DOCK:
* "in-fångandet" av variablerna kan behövas bättras, beroende på server inställningar.
* Koden har funkat bra på FS-datas servrar, men har strulat på andra (och jag har därför inte test kört på ett tag). Detta beror inte på koden utan på inställningarna på servern.
Grafisk fil
email_g.php
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<meta name="generator" content="Adobe GoLive">
<title>E-mail</title>
<style type="text/css" media="screen"><!--
body
{
font-size: 12px;
font-family: Verdana, Arial, Serif, Geneva;
font-style: normal
}
form
{
font-size: 12pt;
font-family: Verdana, Arial, Serif, Geneva;
background-color: transparent
}
input
{
border-right: none;
border-top: none;
border-left: none;
border-bottom: 1px solid black;
background-color: transparent
}
textarea
{
border-right: 1px solid black;
border-top: 1px solid black;
border-left: 1px solid black;
border-bottom: 1px solid black;
background-color: transparent
}
select
{
border-right: 1px solid black;
border-top: 1px solid black;
border-left: 1px solid black;
border-bottom: 1px solid black;
background-color: transparent
}
--></style>
</head>
<body bgcolor="#cecea5">
<FORM ACTION="email_c.php" METHOD=POST NAME=phpgen1 enctype="multipart/form-data">
<table border="0">
<tr>
<td>
<table border="0" cellspacing="2" cellpadding="2" bgcolor="#d8d79f">
<tr>
<td width="70">Från</td>
<td><b>:</b></td>
<td><input type="text" name="from_email" size="30" /></td>
</tr>
<tr>
<td width="70">Till</td>
<td><b>:</b></td>
<td><input type="text" name="to_email" size="30" /></td>
</tr>
<tr>
<td width="70">Cc</td>
<td><b>:</b></td>
<td><input type="text" name="cc_email" size="30" /></td>
</tr>
<tr>
<td width="70">Bcc</td>
<td><b>:</b></td>
<td><input type="text" name="bcc_email" size="30" /></td>
</tr>
<tr>
<td width="70">Rubrik</td>
<td><b>:</b></td>
<td><input type="text" name="subject_email" size="50" /></td>
</tr>
<tr>
<td width="70">Bifoga</td>
<td></td>
<td><input type="file" name="AttachmentFile" size="16" /></td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<hr />
</td>
</tr>
<tr>
<td><textarea name="mess" rows="6" cols="60"></textarea></td>
</tr>
<tr>
<td align="right"><input type="submit" name="Submit" value="Skicka" /></td>
</tr>
</table>
</form>
</body>
</html>
Kod fil
email_c.php
<?
$from_email=chop($from_email);
$to_email=chop($to_email);
$subject_email=chop($subject_email);
$mess=chop($mess);
if (empty($from_email) OR empty($to_email) OR empty($subject_email) OR empty($mess)) {
// något fällt saknas
echo "<font color=\"#FF0000\"><h1>SOME FIELD IS MISSING!!</H1></font>";
exit;
} // if
$file_upload_path = "/spamm/EmailAttachment/";
// ----------------- HEADERN ---------------
$headers = "From: ".$from_email."\n";
$headers .= "Reply-To: ".$from_email."\n";
if (!empty($cc_email)) {
$headers .= "Cc: ".$cc_email."\n";
}
if (!empty($bcc_email)) {
$headers .= "Bcc: ".$bcc_email."\n";
}
$headers .= "MIME-Version: 1.0\n".
"Content-Type: multipart/mixed;\n\t boundary=\"".$boundary1."\"\n".
"X-Priority: 3\n".
"X-Mailer: phpMimeMail ( http://www.ziet.zhitomir.ua/~rozhik/php3/mimemail/ )\n";
// ----------------- BODYN ---------------
$boundary1 = "MAIL-PARTS-2001-CODE-1-".time();
$boundary2 = "MAIL-AttachedPARTS-2001-CODE-2-".time();
$body = "\nThis part of the E-mail should never be seen. If\n";
$body .= "you are reading this, consider upgrading your e-mail\n";
$body .= "client to a MIME-compatible client.\n\n";
$body .= "--".$boundary1."\n".
"Content-Type: multipart/alternative;\n\t".
"boundary=\"".$boundary2."\"\n";
$body .= "\n";
$body .= "--".$boundary2."\n";
$body .= "Content-Type: text/plain\n";
$body .= "Content-Transfer-Encoding: quoted-printable\n\n";
$body .= $mess;
$body .= "\n\n--".$boundary2."--\n";
// --------------------- lägger till ev. fil(er)
$AttachmentFile=chop($AttachmentFile);
if ($AttachmentFile!="") {
$attach_file_name = $_FILES['AttachmentFile']['name']; // $AttachmentFile_name;
$attach_file_type = $_FILES['AttachmentFile']['type'];
$attach_file_sufix = strtolower(substr($attach_file_name, (strrpos($attach_file_name, '.'))));
$BifogadFil = $_FILES['AttachmentFile']['tmp_name']; //$file_upload_path.$filnamn;
if($f=@fopen($BifogadFil,"r")) {
$file_contents=fread($f,filesize($BifogadFil));
fclose($f);
$body .= "\n--".$boundary1."\n";
$body .= "Content-Type: ".$attach_file_type."\n"; //; name='sagan-om-ringen-kvitto.gif'\n";
$body .= "Content-Transfer-Encoding: base64\n";
$body .= "Content-Disposition: inline; filename=\"".$attach_file_name."\"\n\n";
$body .= "".chunk_split(base64_encode($file_contents))."\n";
} else {
echo "<B>ERROR IN \"".$BifogadFil."\" !!!</B>";
} // if($f=@fopen
} // for
$body .= "\n--".$boundary1."--\n";
// ------------------------ Skickar e-mail
$success = mail($to_email, $subject_email, $body, $headers);
// kollar om det gick bra att skicka e-mailet
if ($success) {
echo "---------------------<br><br>\r\n";
echo "to-email : ".$to_email."<br>";
echo "subject_email : ".$subject_email."<br>";
echo $headers;
echo $body;
echo "<br><br>---------------------<br>\r\n";
echo "Mail ivägskickat";
} else {
echo "ERROR ! Mailet kunde inte skickas!";
} // if ($success)
T The_Hulk Medlem sedan juni 2003 1 837 inlägg Hmm, du använder variabeln $boundary1 innan den har tilldelats något värde.
Du använder aldrig variabeln $file_upload_path.
Sen kan det vara en fördel att ändra infångandet av variablerna som du skrev.
$from_email=chop($_POST['from_email']);
$to_email=chop($_POST['to_email']);
$subject_email=chop($_POST['subject_email']);
$mess=chop($_POST['mess']);
Mr T Medlem sedan maj 2007 1 061 inlägg Tack The Hulk. Finner du fler fel, vilket inte alls är omöjligt, får du gärna påpeka dom med. Det var ett tag sedan jag kunde köra det helt funktionelt tyvärr :-(
Dock var det en på forumet som frågade efter ett script, så jag tänkte jag kunde lägga upp det här.
Mr T Medlem sedan maj 2007 1 061 inlägg Har provat scriptet och det funkar precis som det är, men helt klart kan det behövas lite puttsning för att vara "snygg kod". Antagligen har mitt hotell configurerat om servrarna sina.
(provade redan då jag lade upp coden, men först ca 12 timmar senare kom mailen fram !?!??!)