Логин:   Пароль:






Новости
Рассылки
Форум
Поиск


Java
- Апплеты
- Вопрос-ответ
- Классы
- Примеры
- Руководства
- Статьи
- IDE
- Словарь терминов
- Скачать

Мобильная Java
- Игры
- Примеры
- Статьи
- WAP, WML и пр.

JavaScript
- Вопрос-ответ
- Примеры
- Статьи

Веб-мастеринг
- HTML
- CSS
- SSI

Разминка для ума
Проекты
Книги
Ссылки
Программы
Юмор :)




Rambler's Top100
Rambler's Top100

Java: ПримерыОтправка почты из приложения

Отправка почты из приложения

Данный пример очень прост, но и имеет массу недоработок, взять например, то что из 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: ";
  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);
 }
}

Jar-архив

Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/books/show2b.php on line 11

Warning: mysql_db_query() [function.mysql-db-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/books/show2b.php on line 19

Warning: mysql_db_query() [function.mysql-db-query]: A link to the server could not be established in /pub/home/javaport/javaportal/books/show2b.php on line 19

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /pub/home/javaport/javaportal/books/show2b.php on line 30
Узнай о чем ты на самом деле сейчас думаешь тут.


[an error occurred while processing this directive]



Warning: mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/news/worldnews.php on line 91

Warning: mysql_db_query() [function.mysql-db-query]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /pub/home/javaport/javaportal/news/worldnews.php on line 93

Warning: mysql_db_query() [function.mysql-db-query]: A link to the server could not be established in /pub/home/javaport/javaportal/news/worldnews.php on line 93

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /pub/home/javaport/javaportal/news/worldnews.php on line 95