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

📄 sendmail.java

📁 java写的一个可收发EMAIL的类.可用其中的方法直接收发EMAIL.
💻 JAVA
字号:

package song;
 
import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
 
/**
 * 邮件管理类
 * <p>Title: javaMail</p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 */
public class MailManager {
private Properties properties = null;
private String smtphost = null, pop3host = null, smtpUserName = null, smtpPassword = null, pop3UserName = null, pop3Password = null, path = null;
private boolean delete = false;
 
/**
 * 从配置文件中读取配置
 */
public MailManager() {
     properties = new Properties();
      try {
           InputStream in = this.getClass().getResourceAsStream("/mailConfig.properties");
           properties.load(in);
           getConfig();
      } catch (IOException e) {
           e.printStackTrace();
      }
}
 
/**
 * 直接传入配置
 * @param p
 */
public MailManager(Properties p) {
     properties = p;
     getConfig();
}
 
/**
 * 读取配置参数
 */
private void getConfig() {
     smtphost = properties.getProperty("mail.smtp.host");
     pop3host = properties.getProperty("mail.pop3.host");
 
     smtpUserName = properties.getProperty("mail.smtp.username");
     smtpPassword = properties.getProperty("mail.smtp.password");
 
     pop3UserName = properties.getProperty("mail.pop3.username");
     pop3Password = properties.getProperty("mail.pop3.password");
 
      delete = (properties.getProperty("mail.readanddel").equalsIgnoreCase("true") || properties.getProperty("mail.readanddel").equalsIgnoreCase("Y"));
      path = properties.getProperty("mail.affix.path");
 
}
 
public void sendMail(String to, String from, String subject, String content) throws Exception {
    sendMail(to, from, subject, content, null);
}
 
/**
 * 发邮件函数
 * @param to接收人
 * @param from发送人
 * @param subject主题
 * @param content内容
 * @param affix附件数组
 * @throws Exception
 */
public void sendMail(String to, String from, String subject, String content, java.util.Vector affix) throws Exception {
      String tto = to;
      String ttitle = subject;
      String tcontent = content;
 
     Session s = Session.getInstance(properties);
     s.setDebug(false);
 
     MimeMessage message = new MimeMessage(s);
 
      //设置邮件
     InternetAddress from1 = new InternetAddress("webmaster@160dj.com");
     message.setFrom(from1);
      //处理多个收件人
     String[] mutilTo = to.split(";");
     InternetAddress[] to1 = new InternetAddress[mutilTo.length];
      for (int i = 0; i < mutilTo.length; i++) {
           to1[i] = new InternetAddress(mutilTo[i]);
      }
     message.setRecipients(Message.RecipientType.TO, to1);
     message.setSubject(ttitle);
     message.setSentDate(new Date());
 
      //正文处理
     Multipart mm = new MimeMultipart();
     BodyPart mdp = new MimeBodyPart();
     mdp.setContent(tcontent, "text/html;charset=gb2312");
     mm.addBodyPart(mdp);
 
      //附件处理
      if (affix != null) {
           for (int i = 0; i < affix.size(); i++) {
                mdp = new MimeBodyPart();
                String fileSource = (String) affix.elementAt(i);
                String name = fileSource.substring(fileSource.lastIndexOf("/") + 1);
                FileDataSource fds = new FileDataSource(fileSource);
                DataHandler dh = new DataHandler(fds);
                mdp.setFileName(MimeUtility.encodeWord(name));
                mdp.setDataHandler(dh);
                mm.addBodyPart(mdp);
           }
      }
 
      //发送邮件
     message.setContent(mm);
     message.saveChanges();
     Transport transport = s.getTransport("smtp");
     transport.connect(smtphost, smtpUserName, smtpPassword); //以smtp方式登录邮箱
     transport.sendMessage(message, message.getAllRecipients()); //发送邮件,其中第二个参数是所有
     transport.close();
     System.out.println("send success!");
 
}
 
/**
 * 读取邮件服务器上的收件箱中的邮件.
 * @return 所有邮件的矢量数组.单元元素类型为Hashtable.其中有subject,from,content,affix.其中前三项均为字条串,分别表示主题,发件人,和内容.affix为所有附件文件名的矢量数组
 * @throws Exception
 */
public java.util.Vector getMail() throws Exception {
     java.util.Vector allMail = new java.util.Vector();
 
     Session s = Session.getInstance(properties);
     s.setDebug(false);
     javax.mail.Store store = s.getStore("pop3");
     store.connect(pop3host, pop3UserName, pop3Password);
      Folder folder = store.getFolder("INBOX");
      try {
           folder.open(Folder.READ_WRITE);
      } catch (MessagingException ex) {
           folder.open(Folder.READ_ONLY);
      }
     Message message[] = folder.getMessages();
     FetchProfile fp = new FetchProfile();
     fp.add(FetchProfile.Item.ENVELOPE);
     fp.add(FetchProfile.Item.FLAGS);
     fp.add("X-Mailer");
     folder.fetch(message, fp);
      for (int i = 0; i < message.length; i++) {
           Message m = message[i];
           //读取以后是否删除
           if (delete) {
                m.setFlag(javax.mail.Flags.Flag.DELETED, true);
           }
           m.setFlag(javax.mail.Flags.Flag.SEEN, true);
           java.util.Hashtable oneMail = new java.util.Hashtable();
           java.util.Vector affix = new java.util.Vector();
           String content = "", from = "", subject = "";
           Address[] allfrom = m.getFrom();
           from = "";
           for (int a = 0; a < allfrom.length; a++) {
                from += m.getFrom()[0].toString();
                if (a < (allfrom.length - 1)) {
                    from += ";";
                }
           }
           subject = m.getSubject();
           from = javax.mail.internet.MimeUtility.decodeText(from);
           //纯文本文件
           if (m.isMimeType("text/plain") || m.isMimeType("text/html")) {
                content = m.getContent().toString();
           }
 
           //非纯文本文件
           if (m.isMimeType("multipart/*")) {
                Multipart mp = (Multipart) m.getContent();
                int cnt = mp.getCount();
                for (int j = 0; j < cnt; j++) {
                     javax.mail.Part part = mp.getBodyPart(j);
                    String disposition = part.getDisposition();
                if ( (disposition != null) && ( (disposition.equals(Part.ATTACHMENT) || (disposition.equals(Part.INLINE))))) {
                         String name = javax.mail.internet.MimeUtility.decodeText(part.getFileName());
                         java.text.SimpleDateFormat dateFormat = new java.text.SimpleDateFormat("yyyyMMddHHmmssSSS");
                         String saveName = dateFormat.format(new java.util.Date()) + name;
                         saveAffix(saveName, part.getInputStream());
                         affix.add(saveName);
                    } else if (disposition == null) {
                         MimeBodyPart mbp = (MimeBodyPart) part;
                         if (mbp.isMimeType("text/plain") || mbp.isMimeType("text/html")) {
                              content = part.getContent().toString();
                         } else {
                              MimeMultipart mmp = (MimeMultipart)mbp.getContent();
                              int immp = mmp.getCount();
                              for(int iimmp = 0; iimmp<immp;iimmp++){
                                   if(mmp.getBodyPart(iimmp).isMimeType("text/html")){
                                       content = mmp.getBodyPart(iimmp).getContent().toString();
                                  }
                              }
 
                         }
                    }
                }
           }
           oneMail.put("subject", subject);
           oneMail.put("from", from);
           oneMail.put("content", content);
           oneMail.put("affix", affix);
           allMail.add(oneMail);
      }
     folder.close(true);
     store.close();
      return allMail;
}
 
/**
 * 将附件保存到指字的文件夹中.
 * @param fileName
 * @param ins
 * @throws IOException
 */
private void saveAffix(String fileName, java.io.InputStream ins) throws IOException {
     java.io.File f = new java.io.File(path);
      //如果目录不存在,则新建目录.
      if (!f.exists()) {
           f.mkdirs();
      }
      f = null;
      String tempPath = path;
      if (path.endsWith("/")) {
           tempPath += fileName;
      } else {
           tempPath += "/" + fileName;
      }
      f = new java.io.File(tempPath);
     java.io.OutputStream out = new java.io.FileOutputStream(f);
      byte[] buffer = new byte[1024];
      while (ins.read(buffer) > 0) {
           out.write(buffer);
      }
}
} 
 

⌨️ 快捷键说明

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