SitePoint Sponsor

User Tag List

Results 1 to 3 of 3
  1. #1
    SitePoint Enthusiast
    Join Date
    Dec 2010
    Posts
    69
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Sending Email via Gmail Server Connection required..to issue a STARTTLS command first

    Hi Forum,

    As mentioned in title, I am trying to send an email using gmail server....Its making connection perfectly....but asking for issuing a STARTTLS command first....

    Any help regarding this, would be highly appreciated.

    Please find the code below, I am using.

    You can test it....at your server...too..
    PHP Code:
    function authgMail($from$namefrom$to$nameto$subject$message) {
        
    $smtpServer "smtp.gmail.com";   //ip address of the mail server.  This can also be the local domain name
        
    $port "587";                    // should be 25 by default, but needs to be whichever port the mail server will be using for smtp
        
    $timeout "45";                 // typical timeout. try 45 for slow servers
        
    $username "yourname@gmail.com"// the login for your smtp
        
    $password "password";           // the password for your smtp
        
    $localhost "smtp.gmail.com";      // Defined for the web server.  Since this is where we are gathering the details for the email
        
    $newLine "\r\n";           // aka, carrage return line feed. var just for newlines in MS
        
    $secure 0;                  // change to 1 if your server is running under SSL
        //connect to the host and port
        
    $smtpConnect fsockopen($smtpServer$port$errno$errstr$timeout);
        
    $smtpResponse fgets($smtpConnect4096);
        if(empty(
    $smtpConnect)) {
           
    $output "Failed to connect: $smtpResponse";
           echo 
    $output;
           return 
    $output;
        }
        else {
           
    $logArray['connection'] = "<p>Connected to: $smtpResponse";
           echo 
    "<p />connection accepted<br>".$smtpResponse."<p />Continuing<p />";
        }
        
        
    //you have to say HELO again after TLS is started
           
    fputs($smtpConnect"HELO $localhost"$newLine);
           
    $smtpResponse fgets($smtpConnect4096);
           
    $logArray['heloresponse2'] = "$smtpResponse";
           echo 
    $logArray['heloresponse2']."<br />";
        
    //request for auth login
        
    fputs($smtpConnect,"AUTH LOGIN" $newLine);
        
    $smtpResponse fgets($smtpConnect4096);
        
    $logArray['authrequest'] = "$smtpResponse";
        echo 
    $logArray['authrequest']."<br />";
        
    //send the username
        
    fputs($smtpConnectbase64_encode($username) . $newLine);
        
    $smtpResponse fgets($smtpConnect4096);
        
    $logArray['authusername'] = "$smtpResponse";
        echo 
    $logArray['authusername']."<br />";
        
    //send the password
        
    fputs($smtpConnectbase64_encode($password) . $newLine);
        
    $smtpResponse fgets($smtpConnect4096);
        
    $logArray['authpassword'] = "$smtpResponse";
        echo 
    $logArray['authpassword']."<br />";
        
    //email from
        
    fputs($smtpConnect"MAIL FROM: <$from>" $newLine);
        
    $smtpResponse fgets($smtpConnect4096);
        
    $logArray['mailfromresponse'] = "$smtpResponse";
        echo 
    $logArray['mailfromresponse']."<br />";
        
    //email to
        
    fputs($smtpConnect"RCPT TO: <$to>" $newLine);
        
    $smtpResponse fgets($smtpConnect4096);
        
    $logArray['mailtoresponse'] = "$smtpResponse";
        echo 
    $logArray['mailtoresponse']."<br />";
        
    //the email
        
    fputs($smtpConnect"DATA" $newLine);
        
    $smtpResponse fgets($smtpConnect4096);
        
    $logArray['data1response'] = "$smtpResponse";
        echo 
    $logArray['data1response']."<br />";
        
    //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;
        
        
    //observe the . after the newline, it signals the end of message
        
    fputs($smtpConnect"To: $to\r\nFrom: $from\r\nSubject: $subject\r\n$headers\r\n\r\n$message\r\n.\r\n");
        
    $smtpResponse fgets($smtpConnect4096);
        
    $logArray['data2response'] = "$smtpResponse";
        
    //echo $logArray['data2response']."<br />";
        // say goodbye
        
    fputs($smtpConnect,"QUIT" $newLine);
        
    $smtpResponse fgets($smtpConnect4096);
        
    $logArray['quitresponse'] = "$smtpResponse";
        
    $logArray['quitcode'] = substr($smtpResponse,0,3);
        
    fclose($smtpConnect);
        
    //a return value of 221 in $retVal["quitcode"] is a success
        
    return($logArray);
        }
        
    $err=0;  // so far, so good
    $err_msg="";

    if(
    $_POST['name']!="") { echo $_POST['name']."<br>"; }
    else {
      
    $err=1;
      
    $err_msg="You must include your name";
    }

    if(
    $_POST['phone']!="") {echo $_POST['phone']."<br>"; }
    else {
      
    $err=1;
      
    $err_msg="You must include a daytime phone number.";
    }
    if(
    $_POST['streetaddress']!="") { echo $_POST['streetaddress']."<br>"; }
    else {
      
    $err=1;
      
    $err_msg="You must include your address.";
    }
    if(
    $_POST['city']!="") { echo $_POST['city']."<br>"; }
    else {
      
    $err=1;
      
    $err_msg="You must include the city.";
    }
    // Check for the existence of an AT symbol inside the email.
    if (strpos($_POST['email'],"@")) { echo $_POST['email']."<br>"; } 
    else {
      
    $err=1;
      
    $err_msg="You must include a current email address.";
    }
    if(
    $_POST['email']!="") { echo $_POST['email']."<br>"; }
    else {
      
    $err=1;
      
    $err_msg="You must include your e-mail address.";
    }

    echo 
    $err_msg;

    if(
    $err<=0) {
      
    $from="youremail@gmail.com";
      
    $namefrom="Customer Care Department of ";
      
    $to "yourreceipent9@yahoo.com";
      
    $nameto "Admin";
      
    $subject "THis is Testing Email";
      
    $message "Dear Admin, Message ";
      
    // this is it, lets send that email!
      
    if(authgMail($from$namefrom$to$nameto$subject$message))
      {
        echo 
    "Message Sent Successfully";
       }
       else
       {
          echo 
    "Error Message cannot send!"
       } 
    Please help as I want to know how to use TSL/STARTTLS, as what changes required. I am running it at my pc...using WAMP SERVER....

    Any Help would be appreciated.

  2. #2
    Community Advisor silver trophy

    Join Date
    Nov 2006
    Location
    UK
    Posts
    2,559
    Mentioned
    40 Post(s)
    Tagged
    1 Thread(s)
    Use swiftmailer

  3. #3
    SitePoint Author silver trophybronze trophy
    wwb_99's Avatar
    Join Date
    May 2003
    Location
    Washington, DC
    Posts
    10,652
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    Gmail works only over TLS, so you need to tell your mail class you should be using SSL. WAMP might also need to have SSL enabled, never used it so I can't say for sure.


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •