Solved

PHP sending a simple email with a txt document attachment

Posted on 2011-09-26
8
192 Views
Last Modified: 2012-05-12
Hi
I need to send a simple text file as an attachment to an email..
How can I do it?
The text file is on the server...
cheers
mat
<?php
 $to = "matxxxx";
 $subject = "Someone has subscribed to ALICE.. coz ur great.. :-)";
 $body = "Another fan who loves your musak - {$_POST['txtUsername']}";
 if(mail($to, $subject, $body)) echo("<p>Thanks for subscribing! </p>");
 else echo("<p>.</p>");
?>

Open in new window

0
Comment
Question by:funkkube
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
  • 2
8 Comments
 
LVL 36

Expert Comment

by:Loganathan Natarajan
ID: 36700037
You can use phpmailer library to send mails with attachment.

You need to give the path to attach while you send.

just ref.
http://phpmailer.worxware.com/
http://phpmailer.worxware.com/index.php?pg=tutorial
0
 

Author Comment

by:funkkube
ID: 36707500
thanks
i have this working but it keeps putting the number 1 on the page when it loads up..
any idea why?
cheers
<?php
 
  $to = "matxxx";
 
  $subject = "Latest SUBSCRIBERS list.. Download, Open, Apple-A, Apple-C, then Apple-V in the TO box in GMAIL";
  
  $random_hash = md5(date('r', time()));
 
  $headers = "From: matxxxx\r\nReply-To: matxxx";
 
  $headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";
 
  $attachment = chunk_split(base64_encode(file_get_contents("subscribers/subscriberse.txt")));
 
  $output = "
--PHP-mixed-$random_hash;
Content-Type: multipart/alternative; boundary='PHP-alt-$random_hash'
--PHP-alt-$random_hash
Content-Type: text/plain; charset='iso-8859-1'
Content-Transfer-Encoding: 7bit
 
Hello World!
This is the simple text version of the email message.
 
--PHP-alt-$random_hash
Content-Type: text/html; charset='iso-8859-1'
Content-Transfer-Encoding: 7bit
 
<h2>Hello World!</h2>
<p>This is the <b>HTML</b> version of the email message.</p>
 
--PHP-alt-$random_hash--
 
--PHP-mixed-$random_hash
Content-Type: text/plain; name=subscriberse.txt
Content-Transfer-Encoding: base64
Content-Disposition: attachment
 
$attachment
--PHP-mixed-$random_hash--"

;
 
  echo @mail($to, $subject, $output, $headers);
 
?>

Open in new window

0
 

Author Comment

by:funkkube
ID: 36707544
how do i install the php file that does the work?
I have it in my root on the site?
changed the  REQUIRE once parameter..
im a noob..
ta
0
Instantly Create Instructional Tutorials

Contextual Guidance at the moment of need helps your employees adopt to new software or processes instantly. Boost knowledge retention and employee engagement step-by-step with one easy solution.

 
LVL 36

Expert Comment

by:Loganathan Natarajan
ID: 36707557
just download the class library and include on your mail process file.
0
 
LVL 110

Accepted Solution

by:
Ray Paseur earned 500 total points
ID: 36713930
Email is not simple at all -- there are many moving parts that are not under your control, and if you're a "noob" there are better places to cut your teeth.  But you can learn some of it by reading this man page in painstaking detail.  Follow the links to the RFCs and other pages and make sure you understand them, too.  Read every one of the user-contributed notes.
http://php.net/manual/en/function.mail.php

When you have read all of that, consider using a professional Software-As-A-Service offering like ConstantContact.com

Good luck, ~Ray
0
 

Author Comment

by:funkkube
ID: 36815607
Thanks I used phpmailer in the end and just included the code in the page itself..
A little clunky I guess but I couldnt get it to find the location of the php file as i guess the paths were a little wrong.
in some of the documentation it states having to put it in the php library which as far as i know I do not have access to.
i tried putting it in the root of the website but still no joy.
the site is hosted on a oneandone server if that shines any light..
im sure the path thing was the issue but i couldnt work it out.
sticking the contents of the phpmailer file in the webpage at the beginning and then removing the RUNONCE command did the job and it works like a charm.
Would there be any issues with security doing this?
Cheers
Mat
0
 
LVL 110

Expert Comment

by:Ray Paseur
ID: 36891040
... any issues with security?

Security is not an absolute, it is a continuum and is mostly predicated on what you are trying to protect.  Nuclear launch codes, financial data, medical records, bowling scores - all have security requirements that differ.

Here is the mantra: Filter input, escape output.  If you use any external data at all in your programming, you have a security exposure to tainted data and an attack vector.  To reduce the risk from this exposure you can use the PHP filter_var() function variants.
http://php.net/manual/en/function.filter-var.php

Maybe it is not part of the issue any more, but I saw this line in an earlier code snippet:
echo @mail($to, $subject, $output, $headers);

I doubt if that is something you really want :-)

Best regards, ~Ray
0
 
LVL 36

Expert Comment

by:Loganathan Natarajan
ID: 36891184
A little clunky I guess but I couldnt get it to find the location of the php file as i guess the paths were a little wrong.

You can very well find the path of php file... just ref these,

sample 1

sample 2
0

Featured Post

Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Deprecated and Headed for the Dustbin By now, you have probably heard that some PHP features, while convenient, can also cause PHP security problems.  This article discusses one of those, called register_globals.  It is a thing you do not want.  …
Introduction This article is intended for those who are new to PHP error handling (https://www.experts-exchange.com/articles/11769/And-by-the-way-I-am-New-to-PHP.html).  It addresses one of the most common problems that plague beginning PHP develop…
The viewer will learn how to dynamically set the form action using jQuery.
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.

739 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question