Solved

PHP sending email, having control over 'from address'

Posted on 2003-12-09
9
344 Views
Last Modified: 2013-12-13
Hello all,
Thanks for reading this query.

I am trying to send a mail with attachment using PHP and am facing 2 problems with it.

I am trying to do something similar to this code I found on net :


********************************************************************
$fileatt = "a.htm"; // Path to the file
$fileatt_type = "application/octet-stream"; // File Type
$fileatt_name = "a.htm"; // Filename that will be used for the file as the attachment

$email_from = "kk"; // Who the email is from
$email_subject = "hi"; // The Subject of the email
$email_message = "hello"; // Message that the email has in it

$email_to = "abc@hotmail.com"; // Who the email is too

$headers = "From: ".$email_from;



$semi_rand = md5(time());
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";

$headers .= "\nMIME-Version: 1.0\n" .
            "Content-Type: multipart/mixed;\n" .
            " boundary=\"{$mime_boundary}\"";

$email_message .= "This is a multi-part message in MIME format.\n\n" .
                "--{$mime_boundary}\n" .
                "Content-Type:text/html; charset=\"iso-8859-1\"\n" .
               "Content-Transfer-Encoding: 7bit\n\n" .
$email_message . "\n\n";
/********************************************** First File ********************************************/
$fileatt = "a.htm"; // Path to the file
$fileatt_type = "application/octet-stream"; // File Type
$fileatt_name = "a.htm"; // Filename that will be used for the file as the attachment
$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);
$data = chunk_split(base64_encode($data));
$email_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";
unset($data)
unset($file)
unset($fileatt)
unset($fileatt_type)
unset($fileatt_name)

// To add more files just copy the file section again, but make sure they are all one after the other! If they are not it will not work!


$ok = @mail($email_to, $email_subject, $email_message, $headers);

if($ok) {
echo "<font face=verdana size=2>The file was successfully sent!</font>";
} else {
die("Sorry but the email could not be sent. Please go back and try again!");
}

***************************************************************


1) I am unable to have control over "from" address. How do I work about this? ie when teh mail reaches the person, the from address on the email is kk@servername.com?!?! Can I set my own from  address?

2) When I use teh above code as a function which calls it from another function, I get an error at
"unset($file)"
stating that unexpected unset and stuff, however if I run the program by itself there are no errors.

Please advice. Your help is appreciated.

Thanks.

regards,
Karthik
0
Comment
Question by:cancerkats
  • 6
9 Comments
 
LVL 24

Accepted Solution

by:
shivsa earned 250 total points
ID: 9909636
yes. u have to change
$email_from = "kk"; // Who the email is from
to
$email_from = "karthik";

-----------------------------------------------
0
 
LVL 24

Expert Comment

by:shivsa
ID: 9909657
u can remove
unset($file) and see if it works.
it is just unsetting the varible here and freeing itself. once u close the handler it should be closed by itself. as u are doin in code already.
0
 
LVL 24

Expert Comment

by:shivsa
ID: 9909668
and u get this error when u call this program as a function because your main program may not be expecting this.
0
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 

Author Comment

by:cancerkats
ID: 9909701
hi shivsa,

thanks for you suggestions but,

1) i think i didnt explain my 1st query well. I want the from address to be karthik@abc.com instead of karthik@servername.com.

as of now if i fill
$email_from = "karthik@abc.com";

then i get from address as karthik@abc.com@servername.com.

please suggest
0
 
LVL 24

Expert Comment

by:shivsa
ID: 9909725
could u show me your php.ini file.
extention  is added from there.
0
 
LVL 24

Expert Comment

by:shivsa
ID: 9909775
also change this line to

$headers = "From: \r\n Reply-To: $email_from\r\n";


0
 
LVL 24

Expert Comment

by:shivsa
ID: 9979695
any update on it...
0

Featured Post

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

Suggested Solutions

Foreword (July, 2015) Since I first wrote this article, years ago, a great many more people have begun using the internet.  They are coming online from every part of the globe, learning, reading, shopping and spending money at an ever-increasing ra…
These days socially coordinated efforts have turned into a critical requirement for enterprises.
The viewer will learn how to count occurrences of each item in an array.
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…

762 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

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now