bugzy Posted August 12, 2012 Share Posted August 12, 2012 Hello! I got this function somewhere in the web. It's working though the problem is I can't change the "From" name and it is always showing "admin" Here's the function function authSendEmail($from, $namefrom, $to, $nameto, $subject, $message) { //SMTP + SERVER DETAILS /* * * * CONFIGURATION START * * * */ $smtpServer = "mail.mywebsite.com"; $port = "26"; $timeout = "30"; $username = "admin@mywebsite.com"; $password = "my_password"; $localhost = "mail.mywebsite.com"; $newLine = "\r\n"; /* * * * CONFIGURATION END * * * * */ //Connect to the host on the specified port $smtpConnect = fsockopen($smtpServer, $port, $errno, $errstr, $timeout); $smtpResponse = fgets($smtpConnect, 515); if(empty($smtpConnect)) { $output = "Failed to connect: $smtpResponse"; return $output; } else { $logArray['connection'] = "Connected: $smtpResponse"; } //Request Auth Login fputs($smtpConnect,"AUTH LOGIN" . $newLine); $smtpResponse = fgets($smtpConnect, 515); $logArray['authrequest'] = "$smtpResponse"; //Send username fputs($smtpConnect, base64_encode($username) . $newLine); $smtpResponse = fgets($smtpConnect, 515); $logArray['authusername'] = "$smtpResponse"; //Send password fputs($smtpConnect, base64_encode($password) . $newLine); $smtpResponse = fgets($smtpConnect, 515); $logArray['authpassword'] = "$smtpResponse"; //Say Hello to SMTP fputs($smtpConnect, "HELO $localhost" . $newLine); $smtpResponse = fgets($smtpConnect, 515); $logArray['heloresponse'] = "$smtpResponse"; //Email From fputs($smtpConnect, "MAIL FROM: $from" . $newLine); $smtpResponse = fgets($smtpConnect, 515); $logArray['mailfromresponse'] = "$smtpResponse"; //Email To fputs($smtpConnect, "RCPT TO: $to" . $newLine); $smtpResponse = fgets($smtpConnect, 515); $logArray['mailtoresponse'] = "$smtpResponse"; //The Email fputs($smtpConnect, "DATA" . $newLine); $smtpResponse = fgets($smtpConnect, 515); $logArray['data1response'] = "$smtpResponse"; //Construct Headers $headers = "MIME-Version: 1.0" . $newLine; $headers .= "Content-type: text/html; charset=iso-8859-1" . $newLine; $headers .= "To: $nameto <$to>" . $newLine; $headers .= "From: $namefrom <$from>" . $newLine; fputs($smtpConnect, "To:$to\nFrom: $from\nSubject: $subject\n$headers\n\n $message\n.\n"); $smtpResponse = fgets($smtpConnect, 515); $logArray['data2response'] = "$smtpResponse"; // Say Bye to SMTP fputs($smtpConnect,"QUIT" . $newLine); $smtpResponse = fgets($smtpConnect, 515); $logArray['quitresponse'] = "$smtpResponse"; //insert var_dump here -- uncomment out the next line for debug info //var_dump($logArray); } This is my first time to use a mail in php and I wonder if is it possible to change it here? Anyone? Quote Link to comment https://forums.phpfreaks.com/topic/266977-mail-how-to-change-from-name/ Share on other sites More sharing options...
cpd Posted August 12, 2012 Share Posted August 12, 2012 Your going through the entire handshake here and that can be avoided if you use a library or something. PHPMailer is a good library. With regards to your specific issue you need to check what your passing as the $namefrom argument. There's nothing I can see after scanning the function that would alter it. Quote Link to comment https://forums.phpfreaks.com/topic/266977-mail-how-to-change-from-name/#findComment-1368772 Share on other sites More sharing options...
bugzy Posted August 12, 2012 Author Share Posted August 12, 2012 Your going through the entire handshake here and that can be avoided if you use a library or something. PHPMailer is a good library. With regards to your specific issue you need to check what your passing as the $namefrom argument. There's nothing I can see after scanning the function that would alter it. Thanks CPD. I'll try to look at that PHPmailer though I might focus here for the meantime. Yup that $namefrom is kinda missing something on that function and I thought a small modification on the header would do that? or it's more complicated than what I thought? Quote Link to comment https://forums.phpfreaks.com/topic/266977-mail-how-to-change-from-name/#findComment-1368776 Share on other sites More sharing options...
cpd Posted August 12, 2012 Share Posted August 12, 2012 You call the function by saying authSendEmail('cpd@domain.com', 'CPD', ...). Whats the argument you pass in replacement of 'CPD' here? Quote Link to comment https://forums.phpfreaks.com/topic/266977-mail-how-to-change-from-name/#findComment-1368777 Share on other sites More sharing options...
bugzy Posted August 12, 2012 Author Share Posted August 12, 2012 You call the function by saying authSendEmail('cpd@domain.com', 'CPD', ...). Whats the argument you pass in replacement of 'CPD' here? $from = "admin@mywebsite.com"; $namefrom = "My Website Admin"; I'm getting "admin" always which is supposed to be "My Website Admin" Quote Link to comment https://forums.phpfreaks.com/topic/266977-mail-how-to-change-from-name/#findComment-1368782 Share on other sites More sharing options...
cpd Posted August 12, 2012 Share Posted August 12, 2012 fputs($smtpConnect, "To:$to\nFrom: $from\nSubject: $subject\n$headers\n\n $message\n.\n"); Looks like that's the problematic line. Even though $headers is being constructed you're putting From: in front already. You'll notice there is no $fromname there. Remove To/From from that line and append Subject: to the end of the $headers variable then remove the Subject: from that line and have: fputs($smtpConnect, "$headers\n\n $message\n.\n"); That should clear it up. Quote Link to comment https://forums.phpfreaks.com/topic/266977-mail-how-to-change-from-name/#findComment-1368794 Share on other sites More sharing options...
bugzy Posted August 12, 2012 Author Share Posted August 12, 2012 fputs($smtpConnect, "To:$to\nFrom: $from\nSubject: $subject\n$headers\n\n $message\n.\n"); Looks like that's the problematic line. Even though $headers is being constructed you're putting From: in front already. You'll notice there is no $fromname there. Remove To/From from that line and append Subject: to the end of the $headers variable then remove the Subject: from that line and have: fputs($smtpConnect, "$headers\n\n $message\n.\n"); That should clear it up. CPD you're right! Now it's working! The problem now is the subject is missing.. I'm getting this "(no subject)" ? Quote Link to comment https://forums.phpfreaks.com/topic/266977-mail-how-to-change-from-name/#findComment-1368796 Share on other sites More sharing options...
cpd Posted August 12, 2012 Share Posted August 12, 2012 Did you append the subject to the $headers variable? $headers = "MIME-Version: 1.0" . $newLine; $headers .= "Content-type: text/html; charset=iso-8859-1" . $newLine; $headers .= "To: $nameto <$to>" . $newLine; $headers .= "From: $namefrom <$from>" . $newLine; $headers.= "Subject: ".$subject. $newLine; On a side note, I don't think your using the protocol properly. For authentication I've been reading you should use the EHLO command as opposed to HELO and it should be before the AUTH command. I may be completely wrong because I haven't studied the protocol in depth as there's little point but from what I've read the authentication extension to SMTP uses EHLO instead of HELO and its executed in a different order to what you have. Read up on RFC 4954. Again, I'm not 100% because I haven't studied it enough, only skimmed through. Quote Link to comment https://forums.phpfreaks.com/topic/266977-mail-how-to-change-from-name/#findComment-1368798 Share on other sites More sharing options...
bugzy Posted August 12, 2012 Author Share Posted August 12, 2012 Did you append the subject to the $headers variable? $headers = "MIME-Version: 1.0" . $newLine; $headers .= "Content-type: text/html; charset=iso-8859-1" . $newLine; $headers .= "To: $nameto <$to>" . $newLine; $headers .= "From: $namefrom <$from>" . $newLine; $headers.= "Subject: ".$subject. $newLine; On a side note, I don't think your using the protocol properly. For authentication I've been reading you should use the EHLO command as opposed to HELO and it should be before the AUTH command. I may be completely wrong because I haven't studied the protocol in depth as there's little point but from what I've read the authentication extension to SMTP uses EHLO instead of HELO and its executed in a different order to what you have. Read up on RFC 4954. Again, I'm not 100% because I haven't studied it enough, only skimmed through. CPD thank you very much! I have tried to open the link about that EHLO and HELO but those are already been complicated for me as a beginner But just for me to understand what you're saying, what are the possible negative implication of using HELO over EHLO? so far using this code, I'm experiencing a very weird issue... there are times that it is working properly and there are time that the e-mail is not sending at all and you need to wait for like 30 minutes for it to work again... kinda strange. Quote Link to comment https://forums.phpfreaks.com/topic/266977-mail-how-to-change-from-name/#findComment-1368802 Share on other sites More sharing options...
cpd Posted August 12, 2012 Share Posted August 12, 2012 In the long run if you repeatedly try to authenticate and use the protocol incorrectly from the same IP address you can get your IP address blacklisted. Quote Link to comment https://forums.phpfreaks.com/topic/266977-mail-how-to-change-from-name/#findComment-1368804 Share on other sites More sharing options...
bugzy Posted August 12, 2012 Author Share Posted August 12, 2012 In the long run if you repeatedly try to authenticate and use the protocol incorrectly from the same IP address you can get your IP address blacklisted. Alright! Thanks for the information. I will definitely look in to that but right now I will be focusing more on the basic side of php. About the issue I'm talking about, I think the problem is with gmail. I think they're blocking some of the e-mail because their security bot thought that it was a spam because I tried to use another gmail account and it works again. Anyway. Thank you very much again CPD! Quote Link to comment https://forums.phpfreaks.com/topic/266977-mail-how-to-change-from-name/#findComment-1368809 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.