Destramic Posted April 25, 2015 Share Posted April 25, 2015 hey guys i'm trying to test and send a email via SMTP...now i'm able to connect to server and auth login which is fine...but im having a problem sending the email using this line...everything else returns ok from the server. problem is on this line: fputs($this->_smtp_connection, "To: ricky.powell@hotmail.co.uk, destramic@gmail.com\nFrom: noreply@bisi.bis\nSubject: hello\n$headers\n\n$message\n\n"); when using this code the server times out displaying error 500...i've tried to look if the command im using is correct and from what i can see on a tutorial it checks out. the code im using after connect and auth fputs($this->_smtp_connection, "MAIL FROM: noreply@bisi.bid" . $this->_CRLF); print_r($this->get_response()); fputs($this->_smtp_connection, "RCPT TO: ricky.powell@hotmail.co.uk" . $this->_CRLF); fputs($this->_smtp_connection, "RCPT TO: destramic@gmail.com" . $this->_CRLF); print_r($this->get_response()); fputs($this->_smtp_connection, "DATA" . $this->_CRLF); print_r($this->get_response()); $headers = "MIME-Version: 1.0" . $this->_CRLF; $headers .= "Content-type: text/html; charset=iso-8859-1" . $this->_CRLF; $headers .= "To: Ricky Powell <ricky.powell@hotmail.co.uk>" . $this->_CRLF; $headers .= "To: Ricky Powell <destramic@>gmail.com" . $this->_CRLF; $headers .= "From: noreply@bisi.bid <bisi.bid>" . $this->_CRLF; $message = "hello ricky."; //fputs($this->_smtp_connection, "To: ricky.powell@hotmail.co.uk, destramic@gmail.com\nFrom: noreply@bisi.bis\nSubject: hello\n$headers\n\n$message\n\n"); // print_r($this->get_response()); any help would be greatful...thank guys Quote Link to comment Share on other sites More sharing options...
jcbones Posted April 25, 2015 Share Posted April 25, 2015 IIRC CRLF is /r/n not /n/n.As a side note, you should be including a strlen in the fputs function, or it could be corrupted. Quote Link to comment Share on other sites More sharing options...
Destramic Posted April 25, 2015 Author Share Posted April 25, 2015 (edited) i have been using \r\n on the other commands but the tutorial just used \n on that part so i assumed it was right...but after changing it i got the ok message ...so thank you Array ( => 250 [message] => 2.1.0 Ok ) but...i haven't received nothing in either of my inbox's...and ideas to why it would say ok but why i would get no email? As a side note, you should be including a strlen in the fputs function, or it could be corrupted. thanks for the tip...i would do this on every fputs execution right? thanks again Edited April 25, 2015 by Destramic Quote Link to comment Share on other sites More sharing options...
Destramic Posted April 26, 2015 Author Share Posted April 26, 2015 i got working now...i didnt add the DOT at the end of the message now that being done can i just ask a few questions please... 1. how do i add a body and a altbody?...for instance if the recipient doesn't support HTML emails i just just send alt-body. 2. what the difference between connection normally to the server to connecting using telnet? ie. fsockopen($host . ":" . $port, $error_number, $error_string, $timeout); vs fsockopen('telnet ' . $host . ' ' . $port); thank you Quote Link to comment Share on other sites More sharing options...
Destramic Posted April 26, 2015 Author Share Posted April 26, 2015 ok well i found out i needed to set the content type to multipart/alternative with boundaries some reason its not sending to my inbox...can anyone please tell me why? $boundary = uniqid('email'); $command = "MIME-Version: 1.0" . $this->_CRLF; $command .= "To: Ricky Powell <ricky.powell@hotmail.co.uk>" . $this->_CRLF; $command .= "From: BiSi.bid <noreply@bisi.bid>" . $this->_CRLF; $command .= "Subject: hello" . $this->_CRLF; $command .= "Content-Type: multipart/alternative; boundary=$boundary". $this->_CRLF; $command .= "Content-type: text/plain; charset=iso-8859-1" . $this->_CRLF; $command .= "Content-Transfer-Encoding: quoted-printable" . $this->_CRLF; $command .= "This is a MIME encoded message" . $this->_CRLF; $command .= "-- " . $boundary . $this->_CRLF; $command .= "plain text" . $this->_CRLF; $command .= "-- " . $boundary . $this->_CRLF; $command .= "Content-type: text/html; charset=iso-8859-1" . $this->_CRLF; $command .= "Content-Transfer-Encoding: quoted-printable" . $this->_CRLF; $command .= "<b>html text</b>" . $this->_CRLF; $command .= $this->_CRLF . "--" . $boundary . "--" . $this->_CRLF; $this->send_command($command); $this->send_command('.' . $this->_CRLF); print_r($this->get_response()); thank you Quote Link to comment Share on other sites More sharing options...
Destramic Posted April 28, 2015 Author Share Posted April 28, 2015 anyone able to help on this ball ache, multipart emial please? Quote Link to comment Share on other sites More sharing options...
Destramic Posted April 28, 2015 Author Share Posted April 28, 2015 $command = "From: BiSi.bid <noreply@bisi.bid>" . $this->_CRLF; $command .= "To: Ricky Powell <ricky.powell@hotmail.co.uk>" . $this->_CRLF; $command .= "Subject: hello" . $this->_CRLF; $command .= "MIME-Version: 1.0" . $this->_CRLF; $command .= "Content-Type: multipart/alternative; boundary=" . $boundary . $this->_CRLF; $command .= "Content-Transfer-Encoding: 7bit" .$this->_CRLF; $command .= "--" . $boundary . $this->_CRLF; $command .= "Content-type: text/plain; charset=iso-8859-1" . $this->_CRLF; $command .= "Content-Transfer-Encoding: 7bit" . $this->_CRLF; $command .= "Content-Transfer-Encoding: quoted-printable" . $this->_CRLF; $command .= "plain text" . $this->_CRLF; $command .= "-- " . $boundary . $this->_CRLF; $command .= "Content-type: text/html; charset=iso-8859-1" . $this->_CRLF; $command .= "Content-Transfer-Encoding: 7bit" . $this->_CRLF; $command .= "Content-Transfer-Encoding: quoted-printable" . $this->_CRLF; $command .= "<b>hello</b>" . $this->_CRLF; $command .= "--" . $boundary . "--" . $this->_CRLF; $this->send_command($command . '.' . $this->_CRLF); print_r($this->get_response()); after playing with the code i not get the email in my inbox but the message is empty...any ideas why? Quote Link to comment Share on other sites More sharing options...
jcbones Posted April 28, 2015 Share Posted April 28, 2015 Email is a tricky thing, as it has a lot to do with white list, black list an so on. If you are on a shared server, the server could be blacklisted. Some servers also require the FROM address to be an address active on the server. I normally suggest that people use phpmailer, as they make it somewhat easier.The confusing part with your thread is that you have moved to a different set up, and/or you aren't giving enough info.Bottom line, using a mailing library like PHPMailer, SwiftMailer, Zend_Mail, eZcomponents etc. would have you already up and running. Quote Link to comment Share on other sites More sharing options...
Destramic Posted April 30, 2015 Author Share Posted April 30, 2015 The confusing part with your thread is that you have moved to a different set up, and/or you aren't giving enough info. yeah im not trying to send a multipart email plain text and html =/...basically if i just sent a plain or email without it being multipart it sends perfectly I normally suggest that people use phpmailer, as they make it somewhat easier. i'm not a fan of using script other people have used...i like to break something down and write it myself...but i can't workout for the life of me why the message is blank Quote Link to comment Share on other sites More sharing options...
gizmola Posted April 30, 2015 Share Posted April 30, 2015 Yes, but there are standards for valid emails. This seems to be lost on most people. There is no such thing as html emails -- there are text emails with attachments which can include an html portion as an option. It is up to the email client to handle the email. Just because the majority of email clients will handle an html email doesn't mean it's proper to just send html. Furthermore, it's a bad idea because security paranoid people will have configured their email to disable any html and your emails will never be seen. This is why the only proper and 100% valid emails that want to include html need to be multipart. It's more complicated, but as pointed out, it's also a problem solved for a long time and formalized in any of the many libraries you were already pointed to. Otherwise --- you really need to figure out some ways to debug it, including writing the output to a file so you can look at it by hand, or possibly turning on settings in your MTA that will give you some information. Quote Link to comment Share on other sites More sharing options...
Destramic Posted May 12, 2015 Author Share Posted May 12, 2015 (edited) i sorted the problem out now...these headers will send a multipart email plain and html depending on users mail settings. heres the headers //$this->_CRLF = \n which depends on OS $boundary = md5(time()); $headers = "From: name here <noreply@example.bid>" . $this->_CRLF; $headers .= "To: my name <example@example.com>" . $this->_CRLF; $headers .= "Subject: hello" . $this->_CRLF; $headers .= "MIME-Version: 1.0" . $this->_CRLF; $headers .= "Content-Type: multipart/alternative; boundary=" . $boundary . $this->_CRLF; $headers .= "This is a multi-part message in MIME format" . $this->_CRLF; $headers .= "--" . $boundary . $this->_CRLF; $headers .= "Content-type: text/plain; charset=iso-8859-1" . $this->_CRLF; $headers .= "hello, plain text" . $this->_CRLF. $this->_CRLF; $headers .= "--" . $boundary . $this->_CRLF; $headers .= "Content-type: text/html; charset=iso-8859-1" . $this->_CRLF; $headers .= "<b>hello</b>" . $this->_CRLF; $headers .= "--" . $boundary . "--" . $this->_CRLF; $this->send_command($headers . '.' . $this->_CRLF); thanks for your help guys Edited May 12, 2015 by Destramic Quote Link to comment 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.