adding attachment to...

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

ex247
Forum Commoner
Posts: 34
Joined: Tue Oct 28, 2003 1:35 am
Location: Boston, MA, USA
Contact:

adding attachment to...

Post by ex247 »

... a mailing list...

is there an easy way to do it? like a simple upload script or what should i do? thanks
Chambrln
Forum Commoner
Posts: 43
Joined: Tue Dec 02, 2003 10:45 am
Location: Oregon

Post by Chambrln »

I know for a fact that there have been about 4 different posts about this same topic within the last few days. I bet if you did a search for attachments you could probably find your answer.
ex247
Forum Commoner
Posts: 34
Joined: Tue Oct 28, 2003 1:35 am
Location: Boston, MA, USA
Contact:

Post by ex247 »

ok so i check all the posts (prolly shouda done that 1st)

but i see many threads about attaching images and such... i want to be able to add an atachment from my computer when i sent it out and i cant seem to find anything about this...
User avatar
JayBird
Admin
Posts: 4524
Joined: Wed Aug 13, 2003 7:02 am
Location: York, UK
Contact:

Post by JayBird »

have a look at these, write some code, and if you get into difficulties, come back and we will try and help

http://uk2.php.net/features.file-upload

http://uk2.php.net/manual/en/function.mail.php

Mark
ex247
Forum Commoner
Posts: 34
Joined: Tue Oct 28, 2003 1:35 am
Location: Boston, MA, USA
Contact:

Post by ex247 »

it sends the emails fine but from the attachment upload it doesnt add to the email... it confirms the file is there but doesnt send the attachment


The Imput function:

Code: Select all

function writemsg() {
 global $username, $password, $owner_email, $list_name, $admin_keyword;
echo "
<form method="post" enctype="multipart/form-data">
<input type="hidden" name="username" value="$username">
<input type="hidden" name="password" value="$password">
<input type="hidden" name="action" value="$admin_keyword">
<input type="hidden" name="q" value="msgconfirm">
<input type="hidden" name="maxfilesize" value="2000000">
<table align="center" border="0">
<tr><td colspan="2" align="center" valign="top"><font size="+1"><b>Send A Message:</b><br>&nbsp;</td></tr>
<tr><td align="left" valign="top"><b>From: </b></td><td align="left" valign="top">"$list_name" <$owner_email></td></tr>
<tr><td align="left" valign="top"><b>Subject: </b></td><td align="left" valign="top"><input type="text" name="subject" size="35"></td></tr>
<tr><td align="left" valign="top"><b>Message: </b></td><td align="left" valign="top"><textarea rows="15" cols="65" wrap="off" name="message"></textarea></td></tr>
<tr><td align="left" valign="top"><b>Attachment: </b></td><td align="left" valign="top"><input type="file" name="attach" value="$attach" /></td></tr>
<tr><td></td><td align="left" valign="top"><input type="checkbox" checked name="use_sig"><font size="-1"><i>&nbsp;Append Signature</i></td></tr>
<tr><td></td><td align="left" valign="top"><input type="submit" value="Send">&nbsp;<input type="reset" value="Clear"></td></tr></table>
</form>";
&#125;

the confirm function:

Code: Select all

function msgconfirm() &#123;
 global $username, $password, $subject, $message, $owner_email, $list_name, $list_file, $admin_keyword, $use_sig, $attach;
 $subject = stripslashes($subject);
 $message = stripslashes($message);
echo "
<form method="post" enctype="multipart/form-data">
<table align="center" border="0">
<tr><td colspan="2" align="center" valign="top"><font size="+1"><b>Please Confirm this is what you wish to send:</b><br>&nbsp;</td></tr>
<tr><td align="left" valign="top"><b>From: </b></td><td align="left" valign="top">"$list_name" <$owner_email></td></tr>
<tr><td align="left" valign="top"><b>Subject: </b></td><td align="left" valign="top">$subject</td></tr>
<tr><td align="left" valign="top"><b>Attachment: </b></td><td align="left" valign="top">$attach</td></tr>
<tr><td align="left" valign="top"><b>Message: </b></td><td align="left" valign="top"><pre>$message</pre></td></tr>";
 $subject = str_replace(""", "%%", $subject);
 $message = str_replace(""", "%%", $message);
echo"
<input type="hidden" name="username" value="$username">
<input type="hidden" name="password" value="$password">
<input type="hidden" name="message" value="$message">
<input type="hidden" name="subject" value="$subject">
<input type="hidden" name="attach" value="$attach">
<input type="hidden" name="use_sig" value="$use_sig">
<input type="hidden" name="action" value="$admin_keyword">
<input type="hidden" name="q" value="send_msg">
<tr><td></td><td align="left" valign="top"><input type="submit" value="Send">&nbsp;<input type="reset" value="Edit" OnClick="history.go(-1); return true;"></td></tr></table>
</form>";
&#125;
send message function:

Code: Select all

function sendmsg() &#123;
 global $list_name, $list_file, $owner_email, $attach;
  set_time_limit(0);
 $subject = stripslashes($GLOBALS&#1111;subject]);
 $message = stripslashes($GLOBALS&#1111;message]);
 $attach = stripslashes($GLOBALS&#1111;attach]);
 $subject = str_replace("%%", """, $subject);
 $message = str_replace("%%", """, $message); 

 $headers = "From: "$list_name" <$owner_email>\r\nReply-To: $owner_email\r\nX-Sender: $owner_email\r\nX-UnsubscribeURL: http://$GLOBALS&#1111;HTTP_HOST]$GLOBALS&#1111;SCRIPT_NAME]\r\nX-Mailer: Newsletter V$GLOBALS&#1111;version] \r\nX-AntiSpam: Newsletter did not send you this email, review below for sender info.\r\nX-AntiSpam: Sent by $GLOBALS&#1111;REMOTE_ADDR]\r\n";

 if ($GLOBALS&#1111;SERVER_ADMIN]) $headers .= "X-AntiSpam: Server Administrator $GLOBALS&#1111;SERVER_ADMIN]\r\n"; 

 if ($GLOBALS&#1111;'use_sig'] == "on") $message .= $GLOBALS&#1111;'sig'];

 $sucess_count = 0;
 $fail_count = 0;

 $addresses = @file($list_file) or die("<center><b>The list data file could not be opened.</b><br>Check the path and permissions.</center>");
 $addresses&#1111;] = $owner_email;
 set_time_limit(0);
 foreach ($addresses as $email) &#123;
  $email = trim($email);
  if (mail($email, $subject, $message, $headers)) $sucess_count++;
  else $fail_count++;
 &#125;
 echo "<h3 align="center">Your message was sucessfully sent to $sucess_count addresses.</h3><h4 align="center">There was $fail_count unsucessfully sent.</h4>";
&#125;
User avatar
JayBird
Admin
Posts: 4524
Joined: Wed Aug 13, 2003 7:02 am
Location: York, UK
Contact:

Post by JayBird »

it doesn't look like you have added the attatchment to the email anywhere from what i can see.

Look here for help with email attachments http://www.zend.com/zend/spotlight/send ... lpart1.php

Mark
ex247
Forum Commoner
Posts: 34
Joined: Tue Oct 28, 2003 1:35 am
Location: Boston, MA, USA
Contact:

Post by ex247 »

yeah im looking at that... but would i have:

Code: Select all

<input type="hidden" name="maxfilesize" value="2000000">
and

Code: Select all

<tr><td align="left" valign="top"><b>Attachment: </b></td><td align="left" valign="top"><input type="file" name="attach" value="$attach" /></td></tr>
but is the problem that i dont have it attaching in the send function?
User avatar
JayBird
Admin
Posts: 4524
Joined: Wed Aug 13, 2003 7:02 am
Location: York, UK
Contact:

Post by JayBird »

yeah, sorry, i meant your not currently attaching it in the send function

Mark
ex247
Forum Commoner
Posts: 34
Joined: Tue Oct 28, 2003 1:35 am
Location: Boston, MA, USA
Contact:

Post by ex247 »

just putting it in

Code: Select all

global $list_name, $list_file, $owner_email, $attach;
doesnt do it, do i have to add somethig in the $headers like:

Code: Select all

$headers = "From: "$list_name" <$owner_email>\r\nReply-To: $owner_email\r\nX-Sender: $owner_email\r\nX-UnsubscribeURL: http://$GLOBALS&#1111;HTTP_HOST]$GLOBALS&#1111;SCRIPT_NAME]\r\nX-Mailer: Newsletter V$GLOBALS&#1111;version] \r\nX-AntiSpam: Newsletter did not send you this email, review below for sender info.\r\nX-AntiSpam: Sent by $GLOBALS&#1111;REMOTE_ADDR]\r\n$attach\r\n";
ex247
Forum Commoner
Posts: 34
Joined: Tue Oct 28, 2003 1:35 am
Location: Boston, MA, USA
Contact:

Post by ex247 »

ok... now i can get it to post the attachment name with the above $headers code, but it wont send the actual attachment... any ideas?
User avatar
JayBird
Admin
Posts: 4524
Joined: Wed Aug 13, 2003 7:02 am
Location: York, UK
Contact:

Post by JayBird »

okay, here is some code i have for sending attachments, have a look at it, steal it, and if you have any problems come back and ill try to help :)

Code: Select all

<?php 
// Read POST request params into global vars 
$to      = $_POST['to']; 
$from    = $_POST['from']; 
$subject = $_POST['subject']; 
$message = $_POST['message']; 

// 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); 

  // Generate a boundary string 
  $semi_rand = md5(time()); 
  $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 
  
  // 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/plain; charset="iso-8859-1"\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>"; 
} 
?>
Mark
ex247
Forum Commoner
Posts: 34
Joined: Tue Oct 28, 2003 1:35 am
Location: Boston, MA, USA
Contact:

Post by ex247 »

thx, gonna test some stuff out after i get back from a meeting
ex247
Forum Commoner
Posts: 34
Joined: Tue Oct 28, 2003 1:35 am
Location: Boston, MA, USA
Contact:

Post by ex247 »

ok... the imput w/ that upload code wout be:

Code: Select all

<input type="file" name="fileatt" value="$attach" />
or do i needa change the $attach to $fileatt?
ex247
Forum Commoner
Posts: 34
Joined: Tue Oct 28, 2003 1:35 am
Location: Boston, MA, USA
Contact:

Post by ex247 »

well i can do an attachment, but its just the code of the attachment not the actual file hence:

Code: Select all

/tmp/phpjExxoy

This is a multi-part message in MIME format.

--==Multipart_Boundary_x7b1928235f98e29c17477c89039a2a60x
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

Josh

--==Multipart_Boundary_x7b1928235f98e29c17477c89039a2a60x
Content-Type: image/png;
 name="alone.png"
Content-Disposition: attachment;
 filename="alone.png"
Content-Transfer-Encoding: base64

iVBORw0KGgoAAAANSUhEUgAAAZAAAAJYCAMAAAB7MkC6AAAABGdBTUEAAK/INwWK6QAAABl0RVh0
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGAUExURaCgoKOjo1VVVWJiYtnZ2V1dXc/P
z5qamjs7O8XFxXx8fLq6ug8PD6enp7GxsZ2dnZeXl5SUlJaWloqKik5OTjQ0NIyMjJCQkElJSY6O
jkFBQXp6emZmZm1tbSwsLIeHhyIiIoWFhYODg1lZWVJSUoCAgIKCgpKSknJycmhoaHBwcHV1dXd3
d2tra0VFRf7+/v39/dXV1dfX18vLy9LS0tra2sPDw8jIyM3Nzfz8/MbGxsHBwdDQ0Pr6+r6+vry8
vLe3t9zc3Lm5ufv7+7KysrS0tPj4+K+vr9/f3+Hh4a2traqqqqioqOnp6eTk5Pn5+ebm5qWlpZ6e
nvPz8+vr6/X19ff39/Dw8O7u7vb29vT09PLy8vHx8e/v7+3t7ezs7Orq6tvb2+fn5+jo6N3d3eLi
4tPT0+Xl5ePj49HR0czMzKmpqeDg4Kurq7W1tbOzs97e3r+/v5+fn6SkpMfHx7i4uMnJyb29vcLC
wsrKysDAwNbW1tTU1KysrLa2tv///7xwY0QAAACAdFJOU///////////////////////////////
////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////8AOAVLZwAA9KFJ
REFUeNrsvYt/03b2LSrFJCLOz0lkBSngpB6R2Di2Q+KXbCzHkoWEHMlJIxMKbedFp+20TRNIAoRS
wvnX715bTmfO595zbmeGTumMvlDa8jCgpf1Y+7G+wv9Kzgd1hOQRJIAkJwEkASQ5CSAJIMlJAEkA
SU4CSAJIchJAkpMAkgCSnASQBJDkJIAkgCQnASQBJDkJIMlJAEkASU4CSAJIchJAEkCSkwCSAJKc
BJDkJIAkgCQnASQBJDkJIAkgyUkASQBJTgJIchJAEkCSkwCSAJKcBJAEkOQkgCSAJCcBJDkJIAkg
yUkASQBJTgJIAkhyEkASQJKTAJKcBJAEkOQkgCSAJCcBJAEkOQkgCSDJSQBJTgJIAkhyEkASQJKT
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
gg==


--==Multipart_Boundary_x7b1928235f98e29c17477c89039a2a60x--
---
Website Name
http://www.website.com/
some of the attachment code was taken out so i could post it... what the heck is that all about?
User avatar
dev2761
Forum Newbie
Posts: 16
Joined: Thu Oct 16, 2003 7:55 am
Contact:

Post by dev2761 »

Mr Bech, I implemented your wonderful code with my form and still got no results. Maybe you can tell me where I'm going wrong?

okay, here goes:

Code: Select all

//Read POST request params into global vars 
$to      = $_POST['email_t']; 
$from    = $_POST['email_f']; 
$subject = $_POST['subject']; 
$message = $_POST['message']; 

// Obtain file upload vars 
$fileatt      = $_FILES['filename']['tmp_name']; 
$fileatt_type = $_FILES['filename']['type']; 
$fileatt_name = $_FILES['filename']['name'];
this is what I changed, just the names is all.

This is my form which is at the bottom of an upload form which once uploaded shows the image:

Code: Select all

echo "<FORM name='myform' ACTION='send.php' METHOD='POST'>\n";
	    echo "Email To : <INPUT TYPE='TEXT' NAME='email_t'><br>\n";
	    echo "Your ForeName: <INPUT TYPE='TEXT' NAME='name'><br>\n";
	    echo "Your Surname: <INPUT TYPE='TEXT' NAME='surname'><br>\n";
	    echo "Your Email: <INPUT TYPE='TEXT' NAME='email_f'><br>\n";
	    echo "Subject: <INPUT TYPE='TEXT' NAME='subject' value'Oh Goddess'><br>\n";
	    echo "Message: <textarea name='message' rows='10' cols='40'></textarea>\n";
	    //echo "<INPUT TYPE='hidden' NAME='$filename_name'><br>\n";
	    echo "<INPUT TYPE='SUBMIT' VALUE='Send' NAME='sendit'>\n";
	    echo "<INPUT TYPE='SUBMIT' VALUE='Cancel' NAME='cancelit'><br>\n";
	    echo "</form>\n";
As you can see my form $_POST names are identical.
If you want to see the full code it is in the following post.....
http://www.devnetwork.net/forums/viewtopic.php?t=12683

I know that its simple its just I'm so thick I can't see it, either that or I'm trying too hard, thanx in advance
Post Reply