Jus Posted June 26, 2006 Share Posted June 26, 2006 Hi,I'm working on a form script, and it works pretty well. Sends HTML emails to addys I specify.The only problem is, the script only works for some emails. Gmail and hotmail thus far. When I try to use the script on my personal emails, it never even gets to the server. I'm wondering if it's something wrong with my headers, or the "from" field. The forms are coming from an empty sender, so maybe the server assumes it's spam?But that doesn't explain why the "webmaster" copy of the form comes through fine; it has an empty from field as well. I'm completely stumped.I don't even know what code to post, since I don't know the cause of this problem. I ran a search here and saw this thread:[a href=\"http://www.phpfreaks.com/forums/index.php?showtopic=95748&hl=\" target=\"_blank\"]http://www.phpfreaks.com/forums/index.php?...topic=95748&hl=[/a]but he has a different code than I do.Any suggestions? Quote Link to comment https://forums.phpfreaks.com/topic/12920-why-would-a-form-only-work-for-some-emails/ Share on other sites More sharing options...
.josh Posted June 26, 2006 Share Posted June 26, 2006 post the code that builds your email, up to and including your mail() function call Quote Link to comment https://forums.phpfreaks.com/topic/12920-why-would-a-form-only-work-for-some-emails/#findComment-49601 Share on other sites More sharing options...
Jus Posted June 26, 2006 Author Share Posted June 26, 2006 thanks for the quick response...[code] # Send email here ------------------------------------------------------------------------------ if (file_exists("$up_dir/what/$what/attach.txt")){ # Send mail Attachment $fh = fopen ("$up_dir/what/$what/attach.txt", "r"); while (!feof ($fh)) { $check_attach_txt .= fgets($fh, 4096); } fclose ($fh); $get_info = preg_split ("/\|/", $check_attach_txt); $num_file_att = $get_info [0]; $max_upload_size = $get_info [1]; $keep_file = $get_info [2]; $not_allow_type = $get_info [3]; $adv = $get_info [4]; $adv_error = $get_info [5]; $fh = fopen ("$up_dir/what/$what/send_to.txt", "r"); while (!feof ($fh)) { $webmaster_mail_list .= fgets($fh, 4096); } fclose ($fh); $array_webmaster_email = explode("\n", $webmaster_mail_list); $array_for_att = explode("\n", $for_att); foreach ($array_webmaster_email as $val) { if ($val != ""){ if ($email_html == 1 || $email_html == 2) { # HTML FORMAT Send_Mail_Att($array_user_email[0],$val,$subject. " (For webmaster)","HTML",$array_for_att,$email_webmaster); } else{ # TEXT FORMAT Send_Mail_Att($array_user_email[0],$val,$subject. " (For webmaster)","TEXT",$array_for_att,$email_webmaster); } } } # Check Keep file YES NO if ($keep_file == "no"){ # File Attachment will be deleted foreach ($array_for_att as $value){ if ($value != ""){ unlink ("$value"); } } } } else{ # Send email to Webmaster ((normal - no attachment)) $fh = fopen ("$up_dir/what/$what/send_to.txt", "r"); while (!feof ($fh)) { $webmaster_mail_list .= fgets($fh, 4096); } fclose ($fh); $array_webmaster_email = explode("\n", $webmaster_mail_list); foreach ($array_webmaster_email as $val) { if ($val != ""){ if ($email_html == 1 || $email_html == 2) { mail($val, $subject. " (For webmaster)", $email_webmaster, "From: $array_user_email[0]\r\nContent-Type: text/html\r\nX-mailer: PHP/"); } else{ mail($val, $subject. " (For webmaster)", $email_webmaster, "From: $array_user_email[0]\r\nContent-Type: text/plain\r\nX-mailer: PHP/" ); } } } } # end if attch.txt # Send email to User (normal - no attachment) foreach ($array_user_email as $val) { if ($val != ""){ if ($email_html2 == 1 || $email_html2 == 2) { mail($val, $subject, $email_user, "From: $array_webmaster_email[0]\r\nContent-Type: text/html\r\nX-mailer: PHP/"); } else{ mail($val, $subject, $email_user, "From: $array_webmaster_email[0]\r\nContent-Type: text/plain\r\nX-mailer: PHP/" ); } } }exit;} # End if ($ch_thank != "1") {} # End function step_2()# ----------------------------------------------------------------function Send_Mail_Att($From,$To,$Subject,$Format,$File_Att,$Email_Mess){global $upload_dir;$OB="----=_OuterBoundary_000";$IB="----=_InnerBoundery_001";$headers ="MIME-Version: 1.0\r\n"; $headers.="From: ".$From."\n"; $headers.="To: ".$To."\n"; $headers.="Reply-To: ".$From."\n"; $headers.="X-Mailer: PHP Mailer\n"; $headers.="Content-Type: multipart/mixed;\n\tboundary=\"".$OB."\"\n";$Msg ="This is a multi-part message in MIME format.\n";$Msg.="\n--".$OB."\n";$Msg.="Content-Type: multipart/alternative;\n\tboundary=\"".$IB."\"\n\n";if ($Format == "TEXT"){ $Msg.="\n--".$IB."\n"; $Msg.="Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n"; $Msg.="Content-Transfer-Encoding: quoted-printable\n\n"; $Msg.=$Email_Mess."\n\n";}else{ $Msg.="\n--".$IB."\n"; $Msg.="Content-Type: text/html;\n\tcharset=\"iso-8859-1\"\n"; $Msg.="Content-Transfer-Encoding: base64\n\n"; $Msg.=chunk_split(base64_encode($Email_Mess))."\n\n";}$Msg.="\n--".$IB."--\n";if($File_Att){ foreach($File_Att as $File_Att_val){ if ($File_Att_val != ""){ $patharray = explode ("/", $File_Att_val); $FileName=$patharray[count($patharray)-1]; $Msg.= "\n--".$OB."\n"; $Msg.="Content-Type: application/octetstream;\n\tname=\"".$FileName."\"\n"; $Msg.="Content-Transfer-Encoding: base64\n"; $Msg.="Content-Disposition: attachment;\n\tfilename=\"".$FileName."\"\n\n"; $fd=fopen ($File_Att_val, "r"); $FileContent=fread($fd,filesize($File_Att_val)); fclose ($fd); $FileContent=chunk_split(base64_encode($FileContent)); $Msg.=$FileContent; $Msg.="\n\n"; } }}$Msg.="\n--".$OB."--\n";mail($To,$Subject,$Msg,$headers); }[/code] Quote Link to comment https://forums.phpfreaks.com/topic/12920-why-would-a-form-only-work-for-some-emails/#findComment-49603 Share on other sites More sharing options...
d_barszczak Posted June 26, 2006 Share Posted June 26, 2006 I have used the mail() function in a few of my scripts but the main falw is that anti-spammers tend to catch the emails as the webservers ip address tends not to resove back to the From: headers mailserver.ie.www.scripts2go.co.uk 10.0.0.1 - is the webserver.sales@scripts2go.co.uk 10.0.0.2 - is the mailserver.and when the senders ip address is resolved to an IP which is differant from the senders From Header the spammer eats it. Quote Link to comment https://forums.phpfreaks.com/topic/12920-why-would-a-form-only-work-for-some-emails/#findComment-49605 Share on other sites More sharing options...
Jus Posted June 26, 2006 Author Share Posted June 26, 2006 Interesting. Were you able to find a way around it? Quote Link to comment https://forums.phpfreaks.com/topic/12920-why-would-a-form-only-work-for-some-emails/#findComment-49606 Share on other sites More sharing options...
d_barszczak Posted June 26, 2006 Share Posted June 26, 2006 [!--quoteo(post=388000:date=Jun 26 2006, 11:12 AM:name=Jus)--][div class=\'quotetop\']QUOTE(Jus @ Jun 26 2006, 11:12 AM) [snapback]388000[/snapback][/div][div class=\'quotemain\'][!--quotec--]Interesting. Were you able to find a way around it?[/quote]Well!!At this time i was not as experianced with php as i am now and all of the submissions were going to one address so either i would allow an exception on the anit-spammer or i would not place a from address in the from header which would automatically give you an address of eg. username@server1.webhost.com which was fine as like i said only one address recieved the email.Now i would prob have used a IMAP command and used that address purly for sending out as this type of email thatway everything would resolve back to the mailserver. Quote Link to comment https://forums.phpfreaks.com/topic/12920-why-would-a-form-only-work-for-some-emails/#findComment-49613 Share on other sites More sharing options...
Jus Posted June 26, 2006 Author Share Posted June 26, 2006 I can't even get a "From" to show up at all. I wish I had that problem.No matter what I do to $From or where I put it, the email shows up as unknown sender with the from field blank. Any ideas? Quote Link to comment https://forums.phpfreaks.com/topic/12920-why-would-a-form-only-work-for-some-emails/#findComment-49615 Share on other sites More sharing options...
d_barszczak Posted June 26, 2006 Share Posted June 26, 2006 [!--quoteo(post=388009:date=Jun 26 2006, 11:28 AM:name=Jus)--][div class=\'quotetop\']QUOTE(Jus @ Jun 26 2006, 11:28 AM) [snapback]388009[/snapback][/div][div class=\'quotemain\'][!--quotec--]I can't even get a "From" to show up at all. I wish I had that problem.No matter what I do to $From or where I put it, the email shows up as unknown sender with the from field blank. Any ideas?[/quote]Just had a quick look at your code and it would seem your trying to put your From header in from a variable. I would do a quick check to make sure that the variable has data in it at this point. And maybe as a test manually enter the from header just to see if it is your variable or your coding thats causing the problem.Below is a simple code i got off php.net[code]<?php$to = 'nobody@example.com';$subject = 'the subject';$message = 'hello';$headers = 'From: webmaster@example.com'mail($to, $subject, $message, $headers);?> [/code] Quote Link to comment https://forums.phpfreaks.com/topic/12920-why-would-a-form-only-work-for-some-emails/#findComment-49618 Share on other sites More sharing options...
Jus Posted June 26, 2006 Author Share Posted June 26, 2006 My code has elements of that (code posted above).. it just doesn't work. The "from" stays blank Quote Link to comment https://forums.phpfreaks.com/topic/12920-why-would-a-form-only-work-for-some-emails/#findComment-49649 Share on other sites More sharing options...
d_barszczak Posted June 26, 2006 Share Posted June 26, 2006 [!--quoteo(post=388045:date=Jun 26 2006, 01:32 PM:name=Jus)--][div class=\'quotetop\']QUOTE(Jus @ Jun 26 2006, 01:32 PM) [snapback]388045[/snapback][/div][div class=\'quotemain\'][!--quotec--]My code has elements of that (code posted above).. it just doesn't work. The "from" stays blank[/quote]Where is this variable set?: $array_user_email[0] Quote Link to comment https://forums.phpfreaks.com/topic/12920-why-would-a-form-only-work-for-some-emails/#findComment-49650 Share on other sites More sharing options...
Jus Posted June 26, 2006 Author Share Posted June 26, 2006 n/m I got it. I was editing the wrong "from"...the one lower on the page, instead of the one you're looking at, with $array_user_email[0]Works perfectly now. Thx Quote Link to comment https://forums.phpfreaks.com/topic/12920-why-would-a-form-only-work-for-some-emails/#findComment-49660 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.