1 Replies - 727 Views - Last Post: 02 February 2013 - 04:28 AM Rate Topic: -----

#1 vwyodapink   User is offline

  • D.I.C Head

Reputation: 2
  • View blog
  • Posts: 141
  • Joined: 12-May 09

Cant get email to send

Posted 02 February 2013 - 03:57 AM

I am trying to write a little program where once a file is edited it takes that file and attaches it to an email and sends it. For the life of me I cant get it to actually send the email. Can anyone spot my miss or error? I also cant figure out how to put in the Reply to portion, not sure if that even has anything to do with it. I have attached the emailing portion of the code, everything else is working fine but just no email being sent and nothing in the logs to help me. The server it is being tested on also is working fine using sendmail in other programs. Thanks for any help on this.



	function mail_attachment($git_messages, $file) 
		$filename = basename($file);
		//define the receiver of the email
	    $to = '[email protected]';

	    //define the subject of the email
	    $subject = 'Change to Config File '.$filename;
	    $username = isset($_SESSION["username"]) ? $_SESSION["username"] : 'Unknown User';
	    $message = 'Notification: The config file named '.$filename. ' was changed by USER='.$username.', GIT Results: '. $git_messages;

	    $from = "[email protected]"; 

	    //how do we fit this in?
	    //\r\nReply-To: [email protected]\r\n

		// $file should include path and filename
		$file_size = filesize($file);
		$content = chunk_split(base64_encode(file_get_contents($file))); 
		$uid = md5(uniqid(time()));
		$from = str_replace(array("\r", "\n"), '', $from); // to prevent email injection
		$header = "From: ".$from."\r\n"
			  ."MIME-Version: 1.0\r\n"
			  ."Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"
			  ."This is a multi-part message in MIME format.\r\n" 
			  ."Content-type:text/plain; charset=iso-8859-1\r\n"
			  ."Content-Transfer-Encoding: 7bit\r\n\r\n"
			  ."Content-Type: text/html; charset=iso-8859-1\r\n"
		      ."Content-Transfer-Encoding: 7bit\r\n\r\n"
			  ."Content-Type: text/plain; name=\"".$filename."\"\r\n"
			  ."Content-Transfer-Encoding: base64\r\n"
			  ."Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"
		return mail($to, $subject, "", $header);


				//save the file changes
				editor::save_file($full_path, $file_name, $file_input);

				//uncomment this section to run the repo code
				//update the repo
				$repo = Git::open('/some/directory');
			    $git_add_msg = $repo->add('.');
			    $git_commit_msg = $repo->commit('** Commit Message **');
			    $git_push_msg = $repo->push('origin', 'automated');
				//die("GIT REPO PUSH: add = $git_add_msg <br/> commit = $git_commit_msg <br/> push = $git_push_msg");
				$git_messages = " Add = $git_add_msg, Commit = $git_commit_msg, Push = $git_push_msg";

				//email the changes
				mail_attachment($git_messages, $attachment);
		    catch(Exception $e)
		    		echo "Save_file() Exception: " . $e->getMessage();

Is This A Good Question/Topic? 0
  • +

Replies To: Cant get email to send

#2 andrewsw   User is offline

  • blow up my boots
  • member icon

Reputation: 6544
  • View blog
  • Posts: 26,527
  • Joined: 12-December 12

Re: Cant get email to send

Posted 02 February 2013 - 04:28 AM

Your headers seem overly detailed. It includes repeated values and it should not be necessary to duplicate '\r\n'.

I would simplify it; get it to send first without the attachment, reduce the header details to a minimum, then add in the header-settings, perhaps, one by one.

Add print_r($to); etc., just before the email is sent to check that the information is correctly formed. (View Source so you can read this clearly.)

Don't worry about the Reply-To until you've got it working; it should then be simple to include this.

This post has been edited by andrewsw: 02 February 2013 - 04:32 AM

Was This Post Helpful? 0
  • +
  • -

Page 1 of 1