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

📄 mailaction.java

📁 jdo开发实例,一个功能全面的oa系统
💻 JAVA
字号:
package com.gzrealmap.oa.actions;

/**
 * <p>Title: 基本类库</p>
 * <p>Description: 基本类库</p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: 广州瑞图(gzrealmap.com)</p>
 * @author charlse
 * @version 1.0
 */

import javax.servlet.http.*;
import javax.servlet.*;
import com.gzrealmap.lib.webupload.WebUpload;
import com.gzrealmap.lib.util.*;
import com.gzrealmap.archive.actions.*;
import com.gzrealmap.oa.*;
import com.gzrealmap.user.user.*;
import com.gzrealmap.archive.*;
import java.util.*;
import javax.activation.*;
import javax.mail.internet.*;
import javax.mail.*;
import org.apache.commons.fileupload.*;
import com.gzrealmap.lib.log.*;

public class MailAction {
  private MailAction() {
  }
  private static Log log = Log.getInstance(ContentAction.class);
  public static void sendMail(HttpServletRequest request) throws Exception {
    ActionsUtil.processRequest(request);
    WebUpload upload = WebUpload.getInstance(request);
    String username = getUserName(request);
    String password = getPassword(username);
    String to = ArchiveUtils.trimString(upload.getFieldValue("to"));
    String cc = ArchiveUtils.trimString(upload.getFieldValue("cc"));
    String bcc = ArchiveUtils.trimString(upload.getFieldValue("bcc"));
    String subject = upload.getFieldValue("subject");
    String text = upload.getFieldValue("text");
    String host = getSmtpHost();
    String from = username + "@" + host;
    //验证用户和密码

    try {
      sendMail(username, password, to, cc, bcc, subject, text, host, from,
               upload.getFileItems());
    }
    catch (Exception m) { //检测是否有异常
     log.error(m);
    }
  }

  private static String getSmtpHost() {
    String host = com.gzrealmap.lib.sys.RootGlobes.getProperty(
        "OA2004.mailServer");
    return host;
  }

  private static String getPop3Host() {
    String host = com.gzrealmap.lib.sys.RootGlobes.getProperty(
        "OA2004.mailServer");
    return host;
  }


  private static String getPassword(String username) {
    User users = User.getInstance().getUserByName(username);
    String password = users.getUser_pass();
    return password;
  }

  private static String getUserName(HttpServletRequest request) {
    String username = request.getRemoteUser();
    return username;
  }

  public static void restoreMail(HttpServletRequest request) throws Exception {
    WebUpload upload = WebUpload.getInstance(request);
    String host = com.gzrealmap.lib.sys.RootGlobes.getProperty(
        "OA2004.mailServer");
    String from = upload.getFieldValue("from");
    String to = upload.getFieldValue("to");
    String subject = upload.getFieldValue("subject");
    String text = upload.getFieldValue("text");
    //验证用户和密码
    String username = getUserName(request);
    String password = getPassword(username);
    try {
      sendMail(username, password, to, "", "", subject, text, host, from,
               upload.getFileItems());
    }
    catch (Exception m) { //检测是否有异常
     log.error(m);
    }
  }

  private static void sendMail(String username,
                               String password, String to, String cc,
                               String bcc, String subject, String text,
                               String host, String from, Enumeration filesEnum) throws
      AddressException, MessagingException {
    InternetAddress[] toAddrs = InternetAddress.parse(to, false);
    InternetAddress[] ccAddrs = InternetAddress.parse(cc, false);
    InternetAddress[] bccAddrs = InternetAddress.parse(bcc, false);
    Properties props = new Properties();
    props.put("mail.smtp.host", host); //定义smtp协议
    props.put("mail.smtp.auth", "true");
    SimpleAuthenticator subauth = new SimpleAuthenticator(username, password);
    Session mailsession = Session.getInstance(props, subauth);
    Message message = new MimeMessage(mailsession); //创建一个message
    message.setFrom(new InternetAddress(from)); //设置寄信人
    for (int i = 0; i < toAddrs.length; i++) {
      message.addRecipient(Message.RecipientType.TO, toAddrs[i]);
    } //设置收信人}
    for (int i = 0; i < ccAddrs.length; i++) {
      message.addRecipient(Message.RecipientType.CC, toAddrs[i]);
    }
    for (int i = 0; i < bccAddrs.length; i++) {
      message.addRecipient(Message.RecipientType.BCC, bccAddrs[i]);
    }

    message.setSentDate(new java.util.Date()); //设置发信日期
    message.setSubject(subject); //设置主题
    MimeBodyPart textBodyPart = new MimeBodyPart(); //定义邮件主题
    textBodyPart.setText(text);

    MimeMultipart container = new MimeMultipart();
    container.addBodyPart(textBodyPart);
    //发送附件
    Enumeration enum = filesEnum;
    if (enum != null) {
      while (enum.hasMoreElements()) {
        FileItem item = (FileItem) enum.nextElement();
        if (item.getSize() > 0) {
          MimeBodyPart fileBodyPart = new MimeBodyPart(); //定义邮件附件
          String filename = FileUtils.getFileName(item.getName());
          fileBodyPart.setDataHandler(new DataHandler(new ByteArrayDataSource(
              item.get(), item.getContentType())));
          fileBodyPart.setFileName(filename);
          fileBodyPart.addHeader("Content-Transfer-Encoding", "base64");
          fileBodyPart.setHeader("Content-Transfer-Encoding", "base64");
          container.addBodyPart(fileBodyPart);
        }
      }
    }
    message.setContent(container);
    Transport.send(message); //在这里传送信息
  }

  public static void downloadMailAttachment(HttpServletRequest request,
                                       HttpServletResponse response) {
    ActionsUtil.processRequest(request);
    String user = getUserName(request);
    String password = getPassword(user);
    String host = getPop3Host();
    int bodyID = ArchiveUtils.makeString2int(request.getParameter("id")); //邮件中BODYPART的ID
    String mailId = request.getParameter("msgNum");
    int msgID = Integer.parseInt(mailId); //邮件的ID
    try {
      //设置
      Properties props = new Properties();
      props.put("pop3.localhost", host);
      Session mailSession = Session.getDefaultInstance(props);
      //返回和连接
      Store msgStore = mailSession.getStore("pop3");
      msgStore.connect(host, user, password);
      //返回收件箱
      Folder inbox = msgStore.getDefaultFolder().getFolder("INBOX");
      inbox.open(Folder.READ_ONLY);
      Message theMessage = inbox.getMessage(msgID);
      Multipart multipart = (Multipart) theMessage.getContent();
      Part part = multipart.getBodyPart(bodyID);
      String filename = part.getFileName();
      response.setContentType("APPLICATION/OCTET-STREAM");
      response.setHeader("Content-Disposition",
                         "attachment; filename=\"" + filename + "\"");
      response.setContentType(part.getContentType());
      ServletOutputStream out1 = response.getOutputStream();
      out1.write(IOUtils.makeStream2bytes(part.getInputStream()));
      out1.flush();
      out1.close();

      //关闭
      inbox.close(false);
      msgStore.close();
    }
    catch (Exception exc) {
     log.error(exc);
    }
  }

  public static void main(String[] args) throws Exception {
    sendMail("admin", "rm123456", "admin@localhost", "", "", "test", "test",
             "localhost",
             "admin@localhost", null);
    System.out.println("ok");
  }
}

class SimpleAuthenticator
    extends Authenticator {
  private String userName;
  private String password;

  public SimpleAuthenticator(String user, String pass) {
    userName = user;
    password = pass;
  }

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

⌨️ 快捷键说明

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