Отправка почты из приложения
Данный пример очень прост, но и имеет массу недоработок, взять например, то что из textarea может браться текст с символами перехода на другую строку, а smtp-сервер их не переварит (надо их заменить на /r/n). Также необходима проверка вводимого e-mail адреса и т.п.
Пример поможет Вам понять как создавать Java приложения использующие SMTP протокол.
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.net.*; public class MainFrame extends JFrame { XYLayout layout = new XYLayout(); JTextField nameText = new JTextField(); JTextField emailText = new JTextField(); JTextArea messageText = new JTextArea(); JButton button1 = new JButton("Отправить"); JButton button2 = new JButton("Очистить"); private static PrintStream ps = null;//Поток вывода private static DataInputStream dis = null;//Поток ввода public MainFrame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { initmf(); } catch(Exception e) { e.printStackTrace(); } } private void initmf() throws Exception { this.setSize(new Dimension(400, 300)); this.setTitle("Frame Title"); this.getContentPane().setLayout(layout); nameText.setText("Ваше имя"); emailText.setText("Ваш E-mail"); messageText.setText("Текст сообщения"); messageText.setBorder(nameText.getBorder()); this.getContentPane().add(nameText, new XYConstraints(5, 5, 300, 20)); this.getContentPane().add(emailText, new XYConstraints(5, 30, 300, 20)); this.getContentPane().add(messageText, new XYConstraints(5, 60, 380, 160)); this.getContentPane().add(button1, new XYConstraints(5, 230, 0, 0)); this.getContentPane().add(button2, new XYConstraints(120, 230, 0, 0)); button1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(MouseEvent e) { button1_mouseClicked(e); } }); button2.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(MouseEvent e) { button2_mouseClicked(e); } }); } protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } void button1_mouseClicked(MouseEvent e) { String hello = "HELO "; String mail_from ="MAIL FROM:Jar-архив"; String rcpt_to ="RCPT TO: "; String data ="DATA"; String subject ="SUBJECT: Message from site"; String body ="\r\n От: "+nameText.getText()+" E-mail: "+ emailText.getText()+"\r\n"+messageText.getText()+"\r\n.\r\n"; // Сокет Socket smtp = null; // Порт SMTP службы 25 int port = 25; try { smtp = new Socket("mail.valuehost.ru", port); OutputStream os = smtp.getOutputStream(); ps = new PrintStream(os); InputStream is = smtp.getInputStream(); dis = new DataInputStream(is); } catch (IOException ee) { System.out.println("Error connecting: " + ee); } try { String loc = InetAddress.getLocalHost().getHostName(); send(hello + loc); receive(); send(mail_from); receive(); send(rcpt_to); receive(); send(data); receive(); send(subject); receive(); send(body); receive(); System.out.println("Mail send!"); } catch (IOException ee) { System.out.println("Error sending:" + e); } finally { if (smtp != null) try { smtp.close(); } catch (IOException ee) { } } } void button2_mouseClicked(MouseEvent e) { nameText.setText(""); emailText.setText(""); messageText.setText(""); } //Пишет данные в поток private static void send(String str)throws IOException { ps.println(str); ps.flush(); System.out.println("Java sent: " + str); } //Читает данные из потока private static void receive() throws IOException { String readstr = dis.readLine(); System.out.println("SMTP response: " + readstr); } }