⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mailframe.java

📁 Contains a complete archiver by Haruhiko Okumura. The archiver uses an LZ engine whose output is c
💻 JAVA
字号:
package javamail;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.mail.*;
import java.util.*;
import javax.mail.internet.*;
import java.io.*;
import javax.activation.*;

public class MailFrame extends JFrame {
}
  public String host = "smtp.163.com";
  public String username = "javamail";
  public String password = "javamail";
  public String mail_head_name = "mail header";
  public String mail_head_value = "this is head of this mail";
  public String mail_to = "mailto@163.com";
  public String mail_from = "mailfrom@163.com";
  public String mail_subject = "mail subject";
  public String mail_body = "mail body";

  JPanel contentPane;
  JButton SendMail = new JButton();
  JButton jButton2 = new JButton();
  JButton jButton3 = new JButton();
  JButton jButton4 = new JButton();
  JButton jButton5 = new JButton();
  JButton jButton7 = new JButton();
  JButton jButton8 = new JButton();
  JButton jButton9 = new JButton();

  //Construct the frame
  public MailFrame() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }

  //Component initialization
  private void jbInit() throws Exception {
    contentPane = (JPanel)this.getContentPane();
    SendMail.setBounds(new Rectangle(73, 36, 133, 39));
    SendMail.setActionCommand("SendMail");
    SendMail.setText("SendMail");
    SendMail.addActionListener(new MailFrame_SendMail_actionAdapter(this));
    contentPane.setLayout(null);
    this.setSize(new Dimension(530, 346));
    this.setTitle("邮件发送示例");
    jButton2.setText("ReceiveMail");
    jButton2.addActionListener(new MailFrame_jButton2_actionAdapter(this));
    jButton2.setBounds(new Rectangle(73, 105, 133, 39));
    jButton2.setActionCommand("ReceiveMail");
    jButton3.setText("jButton1");
    jButton3.setBounds(new Rectangle(73, 167, 133, 39));
    jButton4.setText("jButton1");
    jButton4.setBounds(new Rectangle(73, 228, 133, 39));
    jButton5.setBounds(new Rectangle(289, 105, 133, 39));
    jButton5.setText("jButton1");
    jButton7.setText("jButton1");
    jButton7.setBounds(new Rectangle(289, 167, 133, 39));
    jButton8.setBounds(new Rectangle(289, 228, 133, 39));
    jButton8.setText("jButton1");
    jButton9.setText("jButton1");
    jButton9.setBounds(new Rectangle(289, 36, 133, 39));
    contentPane.add(jButton3, null);
    contentPane.add(jButton4, null);
    contentPane.add(jButton2, null);
    contentPane.add(SendMail, null);
    contentPane.add(jButton5, null);
    contentPane.add(jButton9, null);
    contentPane.add(jButton7, null);
    contentPane.add(jButton8, null);
  }

  //Overridden so we can exit when window is closed
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }

  void SendMail_actionPerformed(ActionEvent e) {

    try {

      //获取系统环境
      Properties props = new Properties();

      //进行邮件服务器用户认证
      Authenticator auth = new Email_Autherticator();
      props.put("mail.smtp.host", host);
      props.put("mail.smtp.auth", "true");

      //设置session,和邮件服务器进行通讯
      Session session = Session.getDefaultInstance(props, auth);
      MimeMessage message = new MimeMessage(session);

      //设置邮件格式
      message.setContent("Hello", "text/plain");

      //设置邮件主题
      message.setSubject(mail_subject);

      //设置邮件正文
      message.setText(mail_body);

      //设置邮件标题
      message.setHeader(mail_head_name, mail_head_value);

      //设置邮件发送日期
      message.setSentDate(new Date());

      //设置邮件发送者的地址
      Address address = new InternetAddress(mail_from, "test");
      message.setFrom(address);

      //如果要对邮件发送者进行多个参数的设置,可以用以下语句
// Address address[] = {new nternetAddress("sunxm@oaklet.co.jp","sunxmatoaklet"),new InternetAddress("firstsxm@hotmail.com","sunxmathotmail")};
// message.addFrom(address);

      Address toAddress = new InternetAddress(mail_to); //设置邮件接收方的地址
      message.addRecipient(Message.RecipientType.TO, toAddress);
// Address ccAddress = new InternetAddress("firstsxm@hotmail.com");//设置邮件抄送者的地址
// message.addRecipient(Message.RecipientType.CC,ccAddress);
      Transport.send(message); //发送邮件
      /* // to get a specific instance from the session for your protocol.pass along the sername and password
// (blank if unnecessary).send the message,and close the Connection;
           message.saveChanges();
           Transport transport = session.getTransport("smtp");
           transport.connect(host,username,password);
           transport.sendMessage(message,message.getAllRecipients());
           transport.close();
       */
      System.out.println("send ok!");
    }
    catch (Exception ex) {
      System.out.println("faild" + ex);
    }

  }

  void jButton2_actionPerformed(ActionEvent e) {

      //获取系统变量
      Properties props = System.getProperties();

      //进行邮件服务器用户认证
      Authenticator auth = new Email_Autherticator();
      props.put("mail.smtp.host", host);
      props.put("mail.smtp.auth", "true");

      //建立session
      Session session = Session.getDefaultInstance(props, auth);
      Store store = session.getStore("pop3");
      store.connect(host, username, password);

      //在连接到邮件存储区之后,必须先打开一个文件夹,才能读取邮件
      //文件夹,一般默认的是INDEX
      Folder folder = store.getFolder("INBOX");
      //READ_ONLY为打开方式
      folder.open(Folder.READ_WRITE);
      //从文件夹获取邮件信息
      Message message[] = folder.getMessages();

      //可以用两种方式去获得邮件信息,getContent()用来获得邮件的主体信息。
      //而WriteTo()可以用来获得邮件的全部信息,包括头部信息
      for (int i = 0; i < message.length; i++) {
        String out_from_person = ( (InternetAddress) message[i].getFrom()[0]).
            getPersonal();
        String out_from_address = ( (InternetAddress) message[i].getFrom()[0]).
            getAddress();
        System.out.println("From:" + out_from_person + "\t");
        System.out.println("Address:" + out_from_address + "\t");
        String out_subject = message[i].getSubject();
        System.out.println("Subject:" + out_subject + "\t");

        //以下代码用来获得邮件的正文信息
        Part messagePart = message[i];
        Object out_content = messagePart.getContent();

        if (out_content instanceof Multipart) {
          messagePart = ( (Multipart) out_content).getBodyPart(0);
          System.out.println("[ Multipart Message ]");
        }

        String out_content_type = messagePart.getContentType();
        System.out.println("CONTENT:" + out_content_type);

        if (out_content_type.startsWith("text/plain") ||
            out_content_type.startsWith("text/html")) {
          InputStream ipstm = messagePart.getInputStream();
          BufferedReader bufreader = new BufferedReader(new InputStreamReader(ipstm));
          String thisLine = bufreader.readLine();
          while (thisLine != null) {
            System.out.println("thisLine: " + thisLine);
            thisLine = bufreader.readLine();
          }

        message[i].setFlag(Flags.Flag.DELETED, true); //最后删除服务器端的邮件
      }
      folder.close(true);
      store.close();
    }

  }


class MailFrame_SendMail_actionAdapter implements java.awt.event.ActionListener {
  MailFrame adaptee;

  MailFrame_SendMail_actionAdapter(MailFrame adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.SendMail_actionPerformed(e);
  }

  //此段代码用来进行服务器对用户的认证
  public class Email_Autherticator extends Authenticator {
    public Email_Autherticator() {
      super();
    }

    public PasswordAuthentication getPasswordAuthentication() {
      return new PasswordAuthentication(username, password);
    }
  }

}

class MailFrame_jButton2_actionAdapter implements java.awt.event.ActionListener {
  MailFrame adaptee;

  MailFrame_jButton2_actionAdapter(MailFrame adaptee) {
    this.adaptee = adaptee;
  }

  public void actionPerformed(ActionEvent e) {
    adaptee.jButton2_actionPerformed(e);
  }
}
}

    //获取系统环境
    Properties props = new Properties();

    //进行邮件服务器用户认证
    Authenticator auth = new Email_Autherticator();
    props.put("mail.smtp.host", host);
    props.put("mail.smtp.auth", "true");

    //设置session,和邮件服务器进行通讯
    Session session = Session.getDefaultInstance(props, auth);
    MimeMessage message = new MimeMessage(session);

    //设置邮件格式
    message.setContent("Hello", "text/plain");

    //设置邮件主题
    message.setSubject(mail_subject);

    //设置邮件正文
    message.setText(mail_body);

    Properties props = System.getProperties();
    Authenticator auth = new Email_Autherticator();
    props.put("mail.smtp.host",host);
    props.put("mail.smtp.auth","true");
    Session session = Session.getDefaultInstance(props,auth);
    Store store = session.getStore("pop3");
    store.connect(host,username,password);

    //连接到邮件存储区,并打开相应文件夹
    Folder folder = store.getFolder("INBOX");
    folder.open(Folder.READ_WRITE);
    Message message[] = folder.getMessages();

    for (int i=0; i < message.length;i++){
    //获得邮件的部分信息,如头部信息,送信人的署名,送信人的邮件地址
    String out_from_person =
        ((InternetAddress)message[i].getFrom()[0]).getPersonal();
    String out_from_address =
        ((InternetAddress)message[i].getFrom()[0]).getAddress();
    System.out.println("From:"+out_from_person+"\t");
    System.out.println("Address:"+out_from_address+"\t");
    String out_subject = message[i].getSubject();
    System.out.println("Subject:"+out_subject+"\t");

    //以下代码用来获取邮件的主体信息
    Part messagePart = message[i];
    Object out_content = messagePart.getContent();
    if (out_content instanceof Multipart){
        messagePart = ((Multipart)out_content).getBodyPart(0);
        System.out.println("[ Multipart Message ]");
    }

    String out_content_type = messagePart.getContentType();
    System.out.println("CONTENT:"+out_content_type);

    if (out_content_type.startsWith("text/plain")
        || out_content_type.startsWith("text/html")){
        InputStream ipstm = messagePart.getInputStream();
        BufferedReader bufreader =
            new BufferedReader(new InputStreamReader(ipstm));
        String thisLine = bufreader.readLine();
        while (thisLine != null){
            System.out.println("thisLine: "+thisLine);
            thisLine = bufreader.readLine();
        }
    }

    //获取附件
    Multipart mp = (Multipart)message[i].getContent();
    for (int j = 0; j < mp.getCount();j++){
        System.out.println("***"+m+"***");
        Part part = mp.getBodyPart(j);
        String disposition = part.getDisposition();
        if ((disposition != null)
            && ((disposition.equals(part.ATTACHMENT))
            || (disposition.equals(part.INLINE)))){

        //以下代码将获得的附件保存到当前目录下,以附件名作为文件名
        File filename = new File(part.getFileName());
        for (int k = 0; filename.exists(); k++){
          filename = new File(part.getFileName()+k);
        }

        FileOutputStream myFileoutputstream = new FileOutputStream(filename);
        //获得附件的大小
        int chunk = part.getSize();

        byte[] buffer = new byte[chunk];
        InputStream instream = part.getInputStream();
        instream.read(buffer, 0, chunk);
        myFileoutputstream.write(buffer, 0, chunk);
        instream.close();
        myFileoutputstream.close();
    }
  }

  message[i].setFlag(Flags.Flag.DELETED,true);
}

folder.close(true);
store.close();


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -