obay Posted March 10, 2008 Share Posted March 10, 2008 gmail recieves mails sent from php's mail() function, but not yahoo mail.. it worked once, but after that, no mails are received anymore. i check the spam folders, nothing.. any idea what's wrong? Quote Link to comment https://forums.phpfreaks.com/topic/95454-gmail-recieves-mails-sent-from-phps-mail-function-but-not-yahoo-mail/ Share on other sites More sharing options...
MadTechie Posted March 10, 2008 Share Posted March 10, 2008 try this function <?php function send_mail($to, $body, $subject, $fromaddress, $fromname, $attachments=false) { $eol="\r\n"; $mime_boundary=md5(time()); # Common Headers $headers .= "From: ".$fromname."<".$fromaddress.">".$eol; $headers .= "Reply-To: ".$fromname."<".$fromaddress.">".$eol; $headers .= "Return-Path: ".$fromname."<".$fromaddress.">".$eol; // these two to set reply address $headers .= "Message-ID: <".time()."-".$fromaddress.">".$eol; $headers .= "X-Mailer: PHP v".phpversion().$eol; // These two to help avoid spam-filters # Boundry for marking the split & Multitype Headers $headers .= 'MIME-Version: 1.0'.$eol.$eol; $headers .= "Content-Type: multipart/mixed; boundary=\"".$mime_boundary."\"".$eol.$eol; # Open the first part of the mail $msg = "--".$mime_boundary.$eol; $htmlalt_mime_boundary = $mime_boundary."_htmlalt"; //we must define a different MIME boundary for this section # Setup for text OR html - $msg .= "Content-Type: multipart/alternative; boundary=\"".$htmlalt_mime_boundary."\"".$eol.$eol; # Text Version $msg .= "--".$htmlalt_mime_boundary.$eol; $msg .= "Content-Type: text/plain; charset=iso-8859-1".$eol; $msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol; $msg .= strip_tags(str_replace("<br>", "\n", substr($body, (strpos($body, "<body>")+6)))).$eol.$eol; # HTML Version $msg .= "--".$htmlalt_mime_boundary.$eol; $msg .= "Content-Type: text/html; charset=iso-8859-1".$eol; $msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol; $msg .= $body.$eol.$eol; //close the html/plain text alternate portion $msg .= "--".$htmlalt_mime_boundary."--".$eol.$eol; if ($attachments !== false) { for($i=0; $i < count($attachments); $i++) { if (is_file($attachments[$i]["file"])) { # File for Attachment $file_name = substr($attachments[$i]["file"], (strrpos($attachments[$i]["file"], "/")+1)); $handle=fopen($attachments[$i]["file"], 'rb'); $f_contents=fread($handle, filesize($attachments[$i]["file"])); $f_contents=chunk_split(base64_encode($f_contents)); //Encode The Data For Transition using base64_encode(); $f_type=filetype($attachments[$i]["file"]); fclose($handle); # Attachment $msg .= "--".$mime_boundary.$eol; $msg .= "Content-Type: ".$attachments[$i]["content_type"]."; name=\"".$file_name."\"".$eol; // sometimes i have to send MS Word, use 'msword' instead of 'pdf' $msg .= "Content-Transfer-Encoding: base64".$eol; $msg .= "Content-Description: ".$file_name.$eol; $msg .= "Content-Disposition: attachment; filename=\"".$file_name."\"".$eol.$eol; // !! This line needs TWO end of lines !! IMPORTANT !! $msg .= $f_contents.$eol.$eol; } } } # Finished $msg .= "--".$mime_boundary."--".$eol.$eol; // finish with two eol's for better security. see Injection. # SEND THE EMAIL ini_set(sendmail_from,$fromaddress); // the INI lines are to force the From Address to be used ! $mail_sent = mail($to, $subject, $msg, $headers); ini_restore(sendmail_from); return $mail_sent; } ?> Quote Link to comment https://forums.phpfreaks.com/topic/95454-gmail-recieves-mails-sent-from-phps-mail-function-but-not-yahoo-mail/#findComment-488659 Share on other sites More sharing options...
obay Posted March 27, 2008 Author Share Posted March 27, 2008 i tried this but the email ended up in the spam folder of yahoo help? Quote Link to comment https://forums.phpfreaks.com/topic/95454-gmail-recieves-mails-sent-from-phps-mail-function-but-not-yahoo-mail/#findComment-502008 Share on other sites More sharing options...
MadTechie Posted March 27, 2008 Share Posted March 27, 2008 thats probably because of the of the yahoo's filters (not much you can do) it could be down to the number of emails sent, bad subject, bad domain. alot of sites now say please check your junk/spam folder Quote Link to comment https://forums.phpfreaks.com/topic/95454-gmail-recieves-mails-sent-from-phps-mail-function-but-not-yahoo-mail/#findComment-502018 Share on other sites More sharing options...
obay Posted March 27, 2008 Author Share Posted March 27, 2008 yeah, i think i'll just put a 'check ur spam folder' note. thanks for the help! appreciate it a lot!!! by the way, does using the code u gave give the email a better chance of not being marked spam, than just a simply invoking mail() without all those parameters? Quote Link to comment https://forums.phpfreaks.com/topic/95454-gmail-recieves-mails-sent-from-phps-mail-function-but-not-yahoo-mail/#findComment-502041 Share on other sites More sharing options...
MadTechie Posted March 27, 2008 Share Posted March 27, 2008 yes it closer to the standard used my many mail hosts.. (using: end of line, Message-ID, X-Mailer) note the comment $headers .= "Message-ID: <".time()."-".$fromaddress.">".$eol; $headers .= "X-Mailer: PHP v".phpversion().$eol; // These two to help avoid spam-filters Quote Link to comment https://forums.phpfreaks.com/topic/95454-gmail-recieves-mails-sent-from-phps-mail-function-but-not-yahoo-mail/#findComment-502048 Share on other sites More sharing options...
obay Posted March 27, 2008 Author Share Posted March 27, 2008 thanks!!!! Quote Link to comment https://forums.phpfreaks.com/topic/95454-gmail-recieves-mails-sent-from-phps-mail-function-but-not-yahoo-mail/#findComment-502050 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.