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

📄 mailmanager.java

📁 用java编的用到
💻 JAVA
字号:
package djr.mail;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.util.Date;
import java.util.Properties;
import java.util.StringTokenizer;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import djr.common.Constants;
import djr.dao.EmailDAO;
import djr.db.DbFactory;
import djr.dto.EmailDTO;

public class MailManager
{
	private String mailHost = "localhost";

	private String authMode = "true";

	private String user;

	private String password;

	public boolean receiveMail()
	{

		try
		{
			Properties props = getProperties();

			Session mailSession = Session.getInstance(props);
			mailSession.setDebug(true);

			Store store = mailSession.getStore("pop3");
			store.connect(getMailHost(), user, password);

			Folder folder = store.getFolder("INBOX");
			folder.open(Folder.READ_WRITE);
			Message message[] = folder.getMessages();

			for (int i = 0; i < message.length; i++)
			{
				EmailDTO emailDTO = new EmailDTO();
				emailDTO
						.setPersonName(((InternetAddress)message[i].getFrom()[0])
								.getPersonal());
				emailDTO.setFrom(((InternetAddress) message[i].getFrom()[0])
						.getAddress());
				emailDTO.setTitle(message[i].getSubject());
				emailDTO.setMailDate(message[i].getSentDate().toString());

				Part messagePart = message[i];
				Object out_content = messagePart.getContent();
				if (out_content instanceof Multipart)
				{
					messagePart = ((Multipart) out_content).getBodyPart(0);
				}

				String out_content_type = messagePart.getContentType();
				if (out_content_type.startsWith("text/plain")
						|| out_content_type.startsWith("text/html"))
				{
					InputStream ipstm = messagePart.getInputStream();
					BufferedReader bufreader = new BufferedReader(
							new InputStreamReader(ipstm));
					StringBuffer sb = new StringBuffer();
					String thisLine = bufreader.readLine();
					while (thisLine != null)
					{
						sb.append(thisLine);
						thisLine = bufreader.readLine();
					}
					emailDTO.setContent(sb.toString());
				}

				Multipart mp = (Multipart) message[i].getContent();
				for (int j = 0; j < mp.getCount(); j++)
				{
					Part part = mp.getBodyPart(j);
					String disposition = part.getDisposition();
					if ((disposition != null)
							&& ((disposition.equals(part.ATTACHMENT)) || (disposition
									.equals(part.INLINE))))
					{
						File filename = new File(Constants.WEB_ABS_ATTACH_PATH
								+ "/" + part.getFileName());
						for (int k = 0; filename.exists(); k++)
						{
							int index = part.getFileName().indexOf(".");
							String ext = part.getFileName().substring(index);
							filename = new File(Constants.WEB_ABS_ATTACH_PATH
									+ "/"
									+ part.getFileName().substring(0, index)
									+ k + ext);
						}
						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();

						emailDTO.setAttFilePath("attachment" + "/"
								+ filename.getName());
					}
				}
				emailDTO.setUserID(user);
				Connection conn = DbFactory.getConnection();
				if (new EmailDAO().saveEmail(emailDTO, conn))
				{
					message[i].setFlag(Flags.Flag.DELETED, true);
				}
				conn.close();
			}

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

			return true;
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}

		return false;
	}

	public boolean sendMail(EmailDTO emailDTO)
	{

		try
		{
			Properties props = getProperties();

			Session mailSession = Session.getInstance(props);
			mailSession.setDebug(true);

			MimeMessage newMessage = new MimeMessage(mailSession);
			newMessage.setFrom(new InternetAddress(emailDTO.getFrom(), emailDTO
					.getPersonName()));
			newMessage.setSubject(emailDTO.getTitle());
			newMessage.setSentDate(new Date());

			InternetAddress[] toList = getToList(emailDTO.getToList());
			InternetAddress[] ccList = getToList(emailDTO.getCcList());
			InternetAddress[] bccList = getToList(emailDTO.getBccList());

			Transport transport;
			transport = mailSession.getTransport("smtp");
			transport.connect(getMailHost(), user, password);
			newMessage.setRecipients(Message.RecipientType.TO, toList);
			newMessage.setRecipients(Message.RecipientType.CC, ccList);
			newMessage.setRecipients(Message.RecipientType.BCC, bccList);

			BodyPart mbp = new MimeBodyPart();
			mbp.setContent(emailDTO.getContent(), "text/html;charset=GBK");
			Multipart multipart = new MimeMultipart();
			multipart.addBodyPart(mbp);

			if (emailDTO.getAttFile() != null)
			{
				mbp = new MimeBodyPart();
				DataSource source = new FileDataSource(emailDTO.getAttFile());
				mbp.setDataHandler(new DataHandler(source));
				mbp.setFileName(emailDTO.getAttFile().getName());
				multipart.addBodyPart(mbp);
			}

			newMessage.setContent(multipart);

			transport.sendMessage(newMessage, newMessage.getAllRecipients());
			transport.close();

			return true;
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}

		return false;
	}

	public InternetAddress[] getToList(String toSeq) throws AddressException
	{
		StringTokenizer tokenTO = new StringTokenizer(toSeq, ",");
		InternetAddress[] addrArrTO = new InternetAddress[tokenTO.countTokens()];
		int i = 0;
		while (tokenTO.hasMoreTokens())
		{
			addrArrTO[i] = new InternetAddress(tokenTO.nextToken().toString());
			i++;
		}
		return addrArrTO;
	}

	public Properties getProperties()
	{
		Properties props = new Properties();
		props.put("mail.smtp.host", this.getMailHost());
		props.put("mail.smtp.auth", this.getAuthMode());
		return props;
	}

	public String getAuthMode()
	{
		return authMode;
	}

	public void setAuthMode(String authMode)
	{
		this.authMode = authMode;
	}

	public String getMailHost()
	{
		return mailHost;
	}

	public void setMailHost(String mailHost)
	{
		this.mailHost = mailHost;
	}

	public String getPassword()
	{
		return password;
	}

	public void setPassword(String password)
	{
		this.password = password;
	}

	public String getUser()
	{
		return user;
	}

	public void setUser(String user)
	{
		this.user = user;
	}
}

⌨️ 快捷键说明

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