Go Back   CodingForums.com > :: Server side development > PHP

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 12-06-2012, 05:08 AM   PM User | #1
cancer10
Regular Coder

 
Join Date: Jun 2006
Location: India
Posts: 791
Thanks: 208
Thanked 2 Times in 2 Posts
cancer10 can only hope to improve
Question Sending Email with attachment remotely hosted

Hello,

I am trying to send an email using PHP with an attachment thats remotely hosted. I am trying the following script but it does not work with remote attachment but works with attachment with relative path i.e. file existing in the same directory. Can someone please tell me whats wrong in this script?


Code:
<?php
$fileatt = "http://www.freewebs.com/greenalternatives/chickureport_dahanu.PDF"; // Path to the file 
$fileatt_type = "application/pdf"; // File Type 
$fileatt_name = "chickureport_dahanu.PDF"; // Filename that will be used for the file as the attachment

$email_from = "me@mydomain.net"; // Who the email is from 
$email_subject = "Your attached file"; // The Subject of the email 
$email_message = "Thanks for visiting mysite.com! Here is your free file.
";
$email_message .= "Thanks for visiting.
"; // Message that the email has in it

$email_to = 'you@yourdomain.com'; // Who the email is to

$headers = "From: ".$email_from;

$file = fopen($fileatt,'rb'); 
$data = fread($file,filesize($fileatt)); 
fclose($file);

$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";

$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";

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

if($ok) { 
echo "You file has been sent
to the email address you specified.

Make sure to check your junk mail!

Click here to return to mysite.com.";

} else { 
die("Sorry but the email could not be sent. Please go back and try again!"); 
}
__________________
http://outlineme.com/cancer10
cancer10 is offline   Reply With Quote
Old 12-06-2012, 05:59 AM   PM User | #2
Custard7A
Regular Coder

 
Custard7A's Avatar
 
Join Date: Jul 2010
Location: Australia
Posts: 269
Thanks: 32
Thanked 32 Times in 32 Posts
Custard7A is an unknown quantity at this point
If it works with a relative path but not an absolute path then my first thought is your script is fine, but the server(s) aren't allowing absolute paths.

Run the special function phpinfo() (a blank page helps) and check the status of allow_url_fopen.
Custard7A is offline   Reply With Quote
Old 12-06-2012, 06:06 AM   PM User | #3
cancer10
Regular Coder

 
Join Date: Jun 2006
Location: India
Posts: 791
Thanks: 208
Thanked 2 Times in 2 Posts
cancer10 can only hope to improve
What if the allow_url_fopen is false? Is there any alternate option to achieve this?
__________________
http://outlineme.com/cancer10
cancer10 is offline   Reply With Quote
Old 12-06-2012, 08:59 AM   PM User | #4
tangoforce
Senior Coder

 
tangoforce's Avatar
 
Join Date: Feb 2011
Location: Your Monitor
Posts: 3,503
Thanks: 45
Thanked 439 Times in 428 Posts
tangoforce will become famous soon enoughtangoforce will become famous soon enough
Not really no other than cURL which I don't think relies on that setting because it's an independant library.

Also try using file_get_contents() instead of fopen - it makes it a lot easier.

As for the email code, use PHPMailer instead. You won't need to worry about all the complex stuff you're doing.
__________________
Please wrap your code in [php] tags. It is a sticky topic and it HELPS us to HELP YOU!
TIP: Coding styles and $end errors :::::::::: TIP: Warning: Cannot modify header information - headers already sent :::::::::: TIP: Quotes / Parse error: syntax error, unexpected T_..
PHP Code:
//Please don't use this for your form processing:
if (isset($_POST['submit']))
//Internet explorer has a bug and does not always send the submit value. 
Explanation: The IE if(isset($_POST['submit'])) bug explained.
tangoforce is offline   Reply With Quote
Old 12-06-2012, 09:37 AM   PM User | #5
cancer10
Regular Coder

 
Join Date: Jun 2006
Location: India
Posts: 791
Thanks: 208
Thanked 2 Times in 2 Posts
cancer10 can only hope to improve
Thanks guys for your input. Appreciate it.
__________________
http://outlineme.com/cancer10
cancer10 is offline   Reply With Quote
Reply

Bookmarks

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 02:57 PM.


Advertisement
Log in to turn off these ads.