Hey all

I have an assignment for university where we have to write a program to simulate an IDS. Basically how it works is the user enters a code and the program displays a relevant message. If a specific code is entered, an e-mail must be sent to the adminsitrator (in this case me). We aren't allowed to use JavaMail API.

Here's the code I have for sending the e-mail. The recipient address loony064@hotmail.com, the sending address is loony064@gmail.com and the smtp settings for gmail is smtp.gmail.com.

private String toEmailAddress = "loony064@hotmail.com";
private String mailServer = "smtp.gmail.com";

private void email(String message, int code)
{
// send e-mail to administrator
String subject = message;
String content = "";

// code relevant to actually getting the content of the message goes here

Socket socket = new Socket(mailServer, 25);
BufferedReader in = new BufferedReader(new InputStreamReader
                                                      (socket.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter  
                                                      (socket.getOutputStream()));
		
 // message 
send(in, out, "HELO gmail.com");
send(in, out, "MAIL FROM: Laura Unterslak <loony064@gmail.com>");
send(in, out, "RCPT TO: " + toEmailAddress);
send(in, out, "DATA");
send(out, "Subject: " + subject);
send(out, "From:  Laura Unterslak <loony064@gmail.com>");
		      
// message body
send(out, content);
send(in, out, "QUIT");
		      
 // close connection
socket.close();
} // end of void email

public void send(BufferedReader in, BufferedWriter out, String s) 
{
   try 
   {
      out.write(s + "\n");
      out.flush();
      System.out.println(s);
      s = in.readLine();
      System.out.println(s);
   }
   catch (Exception e) 
   {
      e.printStackTrace();
   }
 } // end send(BufferedReader in, BufferedWriter out, String s)

 public void send(BufferedWriter out, String s) {
   try 
   {
      out.write(s + "\n");
      out.flush();
      System.out.println(s);
   }
   catch (Exception e) 
   {
      e.printStackTrace();
   }
 } // end send(BufferedWriter out, String s)

The HELO and MAIL FROM commands are fine, but RCPT TO, DATA and QUIT give the following code and message:

530 5.7.0 must issue a STARTTLS command first. I assume this has something to do with Gmail requiring some sort of authentication but I'm not exactly sure. I haven't been able to find a way to fix this error except for when it occurs using the JavaMail API.

I'd appreciate any help or advice as to how i can resolve this

Yours truly
Laura

This article has been dead for over six months. Start a new discussion instead.