Hey, Have you looked at the Apache james smtp server. Understand the source code.
I haven't looked at your complete code,but you might need a listener for each email sent/received with threading support. Mostly,we do use web-based functionalities and I encourage you to do all. Please also do look at the apache web server code also for further details. Try to first implement a client program properly and then server details. Regards, Jitesh Dundas On 7/4/10, pavan kumar <[email protected]> wrote: > Prateek, > > Issue is not with server code but client code. > > This is what i did: > > I moved lines from 16 to 19 > ss = new Socket(InetAddress.getByName("Invictus-PC"),5100); > output = new ObjectOutputStream(ss.getOutputStream()); > output.flush(); > to > > jButton1ActionPerformed method and closed ObjectOutputStream and Socket > after processing the client request: > > private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { > try { > if( (jTextField1.getText().equalsIgnoreCase("")) || > (jTextField1.getText().equalsIgnoreCase("")) || > (jTextField1.getText().equalsIgnoreCase("")) ) > { > JOptionPane.showMessageDialog(this,"Please fill out the details > properly"); > } > else{ > * Socket ss = new Socket("127.0.0.1",5100); > output = new ObjectOutputStream(ss.getOutputStream()); > output.flush(); > * String s = new String(); > s = > jTextField1.getText()+","+jTextField2.getText()+","+jTextField3.getText(); > output.writeObject(s); > jTextArea1.append("Message is being sent and the details are as > under:\n"); > jTextArea1.append("Message sent to server to be send to : > "+jTextField1.getText()+"\n"); > jTextArea1.append("Message subject is: "+jTextField2.getText()+"\n"); > jTextArea1.append("Actual Message is: "+jTextField3.getText()+"\n"); > jTextArea1.append("WAITING FOR REPLY........\n \n \n \n "); > jTextArea1.setCaretPosition(jTextArea1.getText().length()); > *output.close(); > ss.close();* > }} > catch(Exception e){} > > } > I believe program has to close connection with server port once it completes > sending the request. > > May be someone has better explanation > > On Sat, Jul 3, 2010 at 9:51 PM, Prateek Rawal....... > <[email protected]>wrote: > >> Hey everyone, i'm trying to develop a email program with client and >> server. >> The client will send the message containing the details: >> 1. To whom it should be send >> 2. Subject >> 3. Message Part >> >> This message will go to server which in turn will redirect it to the >> expected destination(the one contained in the "To" part of the message) >> >> I have written the code for both client and server which are as follows: >> >> CLIENT code(I have written it in NetBeans): >> >> >> 1. import java.io.*; >> 2. import java.net.*; >> 3. import javax.swing.JOptionPane; >> 4. >> 5. public class Client extends javax.swing.JFrame implements >> Runnable { >> 6. >> 7. /** Creates new form Client */ >> 8. public Client() { >> 9. initComponents(); >> 10. } >> 11. public void run(){ >> 12. ServerSocket ssoc; >> 13. Socket ss,sen; >> 14. try { >> 15. >> 16. ss = new Socket(InetAddress.getByName("Invictus-PC"), >> 5100); >> 17. output = new >> ObjectOutputStream(ss.getOutputStream()); >> 18. output.flush(); >> 19. ssoc = new ServerSocket(5000); >> 20. >> 21. while(true){ >> 22. >> 1. sen = ssoc.accept(); >> 2. input = new ObjectInputStream(sen.getInputStream()); >> >> 23. String s = (String) input.readObject(); >> 24. int i = s.indexOf(",",0); >> 25. int j = s.indexOf(",",i+1); >> 26. int k = s.indexOf(",",j+1); >> 27. String s1 = s.substring(0,i); >> 28. String s2 = s.substring(i+1,j); >> 29. String s3 = s.substring(j+1); >> 30. jTextArea2.append( >> "New Message Recieved and the Details are as under:\n"); >> 31. jTextArea2.append("Message sent by: "+s1+"\n"); >> 32. jTextArea2.append("Message subject is: "+s2+"\n"); >> 33. jTextArea2.append("Actual message is: "+s3+ >> "\n \n \n \n"); >> 34. >> jTextArea2.setCaretPosition(jTextArea2.getText().length()); >> 35. >> 36. sen.close(); >> 37. input.close(); >> 38. } >> 39. } >> 40. catch(Exception e){ >> 41. e.printStackTrace(); >> 42. } >> 43. >> 44. } >> 45. >> 46. >> 47. @SuppressWarnings("unchecked") >> 48. >> // <editor-fold defaultstate="collapsed" desc="Generated Code"> >> >> 49. private void initComponents() { >> 50. >> 51. jTextField1 = new javax.swing.JTextField(); >> 52. jTextField2 = new javax.swing.JTextField(); >> 53. jTextField3 = new javax.swing.JTextField(); >> 54. jButton1 = new javax.swing.JButton(); >> 55. jButton2 = new javax.swing.JButton(); >> 56. jLabel1 = new javax.swing.JLabel(); >> 57. jLabel2 = new javax.swing.JLabel(); >> 58. jLabel3 = new javax.swing.JLabel(); >> 59. jScrollPane1 = new javax.swing.JScrollPane(); >> 60. jTextArea1 = new javax.swing.JTextArea(); >> 61. jScrollPane2 = new javax.swing.JScrollPane(); >> 62. jTextArea2 = new javax.swing.JTextArea(); >> 63. jLabel4 = new javax.swing.JLabel(); >> 64. jLabel5 = new javax.swing.JLabel(); >> 65. >> 66. >> >> setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); >> 67. getContentPane().setLayout(null); >> 68. getContentPane().add(jTextField1); >> 69. jTextField1.setBounds(60, 30, 260, 50); >> 70. getContentPane().add(jTextField2); >> 71. jTextField2.setBounds(60, 100, 260, 40); >> 72. getContentPane().add(jTextField3); >> 73. jTextField3.setBounds(60, 160, 260, 140); >> 74. >> 75. jButton1.setText("Send"); >> 76. jButton1.addActionListener(new >> java.awt.event.ActionListener() { >> 77. public void >> actionPerformed(java.awt.event.ActionEvent evt) { >> 78. jButton1ActionPerformed(evt); >> 79. } >> 80. }); >> 81. getContentPane().add(jButton1); >> 82. jButton1.setBounds(60, 340, 100, 30); >> 83. >> 84. jButton2.setText("Reset"); >> 85. jButton2.addActionListener(new >> java.awt.event.ActionListener() { >> 86. public void >> actionPerformed(java.awt.event.ActionEvent evt) { >> 87. jButton2ActionPerformed(evt); >> 88. } >> 89. }); >> 90. getContentPane().add(jButton2); >> 91. jButton2.setBounds(220, 340, 100, 30); >> 92. >> 93. jLabel1.setText("To:"); >> 94. getContentPane().add(jLabel1); >> 95. jLabel1.setBounds(20, 20, 40, 50); >> 96. >> 97. jLabel2.setText("Subject:"); >> 98. getContentPane().add(jLabel2); >> 99. jLabel2.setBounds(10, 100, 50, 40); >> 100. >> 101. jLabel3.setText("Message:"); >> 102. getContentPane().add(jLabel3); >> 103. jLabel3.setBounds(10, 150, 46, 40); >> 104. >> 105. jTextArea1.setColumns(20); >> 106. jTextArea1.setRows(5); >> 107. jScrollPane1.setViewportView(jTextArea1); >> 108. >> 109. getContentPane().add(jScrollPane1); >> 110. jScrollPane1.setBounds(500, 30, 380, 150); >> 111. >> 112. jTextArea2.setColumns(20); >> 113. jTextArea2.setRows(5); >> 114. jScrollPane2.setViewportView(jTextArea2); >> 115. >> 116. getContentPane().add(jScrollPane2); >> 117. jScrollPane2.setBounds(500, 230, 380, 170); >> 118. >> 119. jLabel4.setText("Sending Message Details:"); >> 120. getContentPane().add(jLabel4); >> 121. jLabel4.setBounds(360, 30, 130, 150); >> 122. >> 123. jLabel5.setText("Recieving Message Details:"); >> 124. getContentPane().add(jLabel5); >> 125. jLabel5.setBounds(360, 230, 130, 170); >> 126. >> 127. pack(); >> 128. }// </editor-fold> >> 129. >> 130. private void >> jButton2ActionPerformed(java.awt.event.ActionEvent evt) { >> 131. jTextField1.setText(""); >> 132. jTextField2.setText(""); >> 133. jTextField3.setText(""); >> 134. } >> 135. >> 136. private void >> jButton1ActionPerformed(java.awt.event.ActionEvent evt) { >> 137. try { >> 138. >> 139. if( (jTextField1.getText().equalsIgnoreCase("" >> )) || (jTextField1.getText().equalsIgnoreCase("" >> )) || (jTextField1.getText().equalsIgnoreCase("")) ) >> 140. { >> 141. JOptionPane.showMessageDialog(this, >> "Please fill out the details properly"); >> 142. } >> 143. else{ >> 144. String s = new String(); >> 145. s = jTextField1.getText()+","+jTextField2.getText()+"," >> +jTextField3.getText(); >> 146. output.writeObject(s); >> 147. jTextArea1.append( >> "Message is being sent and the details are as under:\n"); >> 148. jTextArea1.append("Message sent to server to be send to : " >> +jTextField1.getText()+"\n"); >> 149. jTextArea1.append("Message subject is: " >> +jTextField2.getText()+"\n"); >> 150. jTextArea1.append("Actual Message is: " >> +jTextField3.getText()+"\n"); >> 151. jTextArea1.append("WAITING FOR REPLY........\n \n \n \n "); >> 152. jTextArea1.setCaretPosition(jTextArea1.getText().length()); >> 153. }} >> 154. catch(Exception e){} >> 155. >> 156. >> 157. } >> 158. >> 159. >> 160. public static void main(String args[]) { >> 161. java.awt.EventQueue.invokeLater(new Runnable() { >> 162. public void run() { >> 163. Client u = new Client(); >> 164. u.setVisible(true); >> 165. Thread t = new Thread(u); >> 166. t.start(); >> 167. } >> 168. }); >> 169. } >> 170. ObjectOutputStream output; >> 171. ObjectInputStream input; >> 172. // Variables declaration - do not modify >> >> 173. private javax.swing.JButton jButton1; >> 174. private javax.swing.JButton jButton2; >> 175. private javax.swing.JLabel jLabel1; >> 176. private javax.swing.JLabel jLabel2; >> 177. private javax.swing.JLabel jLabel3; >> 178. private javax.swing.JLabel jLabel4; >> 179. private javax.swing.JLabel jLabel5; >> 180. private javax.swing.JScrollPane jScrollPane1; >> 181. private javax.swing.JScrollPane jScrollPane2; >> 182. private javax.swing.JTextArea jTextArea1; >> 183. private javax.swing.JTextArea jTextArea2; >> 184. private javax.swing.JTextField jTextField1; >> 185. private javax.swing.JTextField jTextField2; >> 186. private javax.swing.JTextField jTextField3; >> 187. // End of variables declaration >> 188. >> 189. } >> >> >> >> >> >> >> SERVER Code: >> >> >> >> 1. import java.net.*; >> 2. import java.io.*; >> 3. import java.io.ObjectInputStream; >> 4. import java.io.ObjectOutputStream; >> 5. >> 6. >> 7. public class Server extends javax.swing.JFrame implements >> Runnable { >> 8. >> 9. /** Creates new form Server */ >> 10. public Server() { >> 11. initComponents(); >> 12. } >> 13. public void run(){ >> 14. ServerSocket ss; >> 15. Socket s; >> 16. try { >> 17. >> 18. ss = new ServerSocket(5100,10); >> 19. while(true){ >> 20. >> 21. >> 22. s = ss.accept(); >> 23. >> 24. >> 25. input = new ObjectInputStream(s.getInputStream()); >> 26. >> 27. String str = (String) input.readObject(); >> 28. int i = str.indexOf(",",0); >> 29. int j = str.indexOf(",",i+1); >> 30. int k = str.indexOf(",",j+1); >> 31. String s1 = str.substring(0,i); >> 32. String s2 = str.substring(i+1,j); >> 33. String s3 = str.substring(j+1); >> 34. jTextArea1.append("Message Recieved\n"); >> 35. jTextArea1.append("Details are as under:\n"); >> 36. jTextArea1.append("Message sent by: " >> +s.getInetAddress()+"\n"); >> 37. jTextArea1.append("Message sent to: "+s1+"\n"); >> 38. jTextArea1.append("Message subject is: "+s2+"\n"); >> 39. jTextArea1.append("Actual Message is :"+s3+"\n"); >> 40. jTextArea1.append("Sending Message from: " >> +s.getInetAddress()+" to: "+s1+"\n"); >> 41. >> jTextArea1.setCaretPosition(jTextArea1.getText().length()); >> 42. Socket another = new Socket(InetAddress.getByName(s1), >> 5000); >> 43. ObjectOutputStream o1 = new >> ObjectOutputStream(another.getOutputStream()); >> 44. String s4 = s.getInetAddress()+","+s2+","+s3; >> 45. o1.writeObject(s4); >> 46. jTextArea1.append("Message Send: "+s4+"\n"); >> 47. >> 48. s.close(); >> 49. another.close(); >> 50. input.close(); >> 51. o1.close(); >> 52. } >> 53. } >> 54. catch(Exception e){ >> 55. e.printStackTrace(); >> 56. } >> 57. } >> 58. >> 59. /** This method is called from within the constructor to >> 60. * initialize the form. >> 61. >> * WARNING: Do NOT modify this code. The content of this method is >> 62. * always regenerated by the Form Editor. >> 63. */ >> 64. @SuppressWarnings("unchecked") >> 65. >> // <editor-fold defaultstate="collapsed" desc="Generated Code"> >> >> 66. private void initComponents() { >> 67. >> 68. jScrollPane1 = new javax.swing.JScrollPane(); >> 69. jTextArea1 = new javax.swing.JTextArea(); >> 70. >> 71. >> >> setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); >> 72. >> 73. jTextArea1.setColumns(20); >> 74. jTextArea1.setRows(5); >> 75. jScrollPane1.setViewportView(jTextArea1); >> 76. >> 77. >> getContentPane().add(jScrollPane1, >> java.awt.BorderLayout.CENTER); >> 78. >> 79. pack(); >> 80. }// </editor-fold> >> 81. >> 82. /** >> 83. * @param args the command line arguments >> 84. */ >> 85. public static void main(String args[]) { >> 86. java.awt.EventQueue.invokeLater(new Runnable() { >> 87. public void run() { >> 88. >> 89. Server u = new Server(); >> 90. u.setVisible(true); >> 91. Thread t = new Thread(u); >> 92. t.start(); >> 93. } >> 94. }); >> 95. } >> 96. ObjectOutputStream output; >> 97. ObjectInputStream input; >> 98. // Variables declaration - do not modify >> 99. private javax.swing.JScrollPane jScrollPane1; >> 100. private javax.swing.JTextArea jTextArea1; >> 101. // End of variables declaration >> 102. >> 103. } >> 104. >> >> >> >> I tried testing it on local machine, >> i run server and then client, >> after than i filled out the details in the client form, mentioning the >> localhost in the to field, >> >> For the first time,Client sends succesfully, Server also recieves >> Successfully and forwards it to the expected destination(in this case the >> localmachine) Successfully, and is recieved successfully at the >> client(which >> is reflected in the recieved message details textarea) >> >> But then when i do it for second time,Client sends succesfully, Server >> DOESNOT recieve it, and hence do not forward it, and hence message not >> received at the destination. >> >> THE PROBLEM is that the loop in the SERVER CODE runs only once(I don't >> know >> why is this so, im really frustated). >> Please help me pointing out where am i going wrong. >> Just run the code(after making the changes you told) and tell me why is >> the >> loop in the SERVER code runs only once(for the first time), I think that >> is >> the CORE PROBLEM........ >> PLEASE HELP! >> >> -- >> To post to this group, send email to >> [email protected] >> To unsubscribe from this group, send email to >> [email protected]<javaprogrammingwithpassion%[email protected]> >> For more options, visit this group at >> http://groups.google.com/group/javaprogrammingwithpassion?hl=en > > > > > -- > Thanks, > Pawan. > > While one person hesitates because he feels inferior, another is busy making > mistakes and becoming superior. > > Henry C. Link > > -- > To post to this group, send email to > [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/javaprogrammingwithpassion?hl=en -- To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/javaprogrammingwithpassion?hl=en
