欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用java mail进行简单的邮件收发

程序员文章站 2022-07-03 09:46:37
...
今天开发过程中遇到降价通知的问题,价格下降了则发送email到指定邮箱。顺便学习下java如何进行简单的邮件收发。

sun公司提供的 java mail api能够很好的解决这个问题,下面是具体的思路与代码。
1、发邮件:
主要分为以下四个步骤:
a、创建收发邮件session(创建时可以使用java.util.properties类进行各类参数的写入,并使用Authencator类进行邮箱校验);
b、由session对象创建mimeMessage邮件;
c、由session对象创建邮件发送对象Transport;
d、有发送对象发送邮件并关闭transport;
代码如下:
public class MailInit {

	/**
	 * 初始化邮件收发Session
	 * @author zhanghao
	 * 20150327
	 * */
	public static Session init(String host,final String username,final String password){
		
		//初始化邮件相关配置信息
		Properties properties = new Properties();
		properties.setProperty("mail.smtp.auth", "true");
		properties.setProperty("mail.smtp.host", host);
		properties.setProperty("mail.transport.protocol", "smtp"); //校验有关?
		properties.setProperty("mail.store.protocol", "pop3"); //收邮件
		
		//完成邮箱用户名、密码校验
		Authenticator authenticator = new Authenticator() {
			protected PasswordAuthentication getPasswordAuthentication(){
				return new PasswordAuthentication(username, password);
			}
		};
		//创建收发邮件Session
		Session session = Session.getInstance(properties, authenticator);
		return session;
	}
	

/**
	 * 邮件发送(单人)
	 * */
	public void sendSingle(String subject,String contect,String username,String password,InternetAddress address){
		String host = MailInit.getHostByUserName(username);
		Session session =MailInit.init(host, username, password);
		
		//创建mime邮件
		MimeMessage message = new MimeMessage(session);
		try {
			//设置发件人
			message.setFrom(new InternetAddress(username));
			//设置收件人
			message.addRecipient(Message.RecipientType.TO, address);
			//设置主题
			message.setSubject("邮件主题");
			//设置内容
			message.setContent(contect,"text/html;charset=utf-8");
			//发送邮件
			Transport.send(message);
			logger.info("邮件发送成功!!");
		} catch (MessagingException e) {
			String msg = "邮件发送失败!!";
			logger.error(msg);
			throw new RuntimeException(msg);
		}
	}
	
	/**
	 * 邮件群发
	 * */
	public void sendGroup(String subject,String contect,String username,String password,InternetAddress[] addressGroup){
		String host = MailInit.getHostByUserName(username);
		Session session =MailInit.init(host, username, password);
		
		//创建mime邮件
		MimeMessage message = new MimeMessage(session);
		try {
			//设置发件人
			message.setFrom(new InternetAddress(username));
			//设置收件人
			message.addRecipients(RecipientType.TO, addressGroup);
			//设置主题
			message.setSubject("邮件主题");
			//设置内容
			message.setContent(contect,"text/html;charset=utf-8");
			//发送邮件
			Transport.send(message);
		} catch (MessagingException e) {
			String msg = "邮件发送失败!!";
			logger.error(msg);
			throw new RuntimeException(msg);
		}
		
	}
2、收邮件主要分为以下几个步骤:
a、创建收发邮件session(创建时可以使用java.util.properties类进行各类参数的写入,并使用Authencator类进行邮箱校验);
b、由session对象创建store对象连接邮箱;
c、由store对象创建Folder文件夹(注:此时创建完成之后需要使用open方法打开文件夹);
d、Folder的实例调用getMessage方法 返回Message数组,获取邮件内容。
代码如下:
public void receiveMail(String username,String password){
		String host = MailInit.getPop3ByUserName(username);
		Session session =MailInit.init(host, username, password);
		//创建store
		Store store;
		try {
			store = session.getStore();
			store.connect(host,110,username,password);  
			//连接 完成后打开Folder
			Folder folder = store.getFolder("INBOX"); //INBOX是POP3唯一可以使用的文件夹。如果使用IMAP,还可以用其它的文件夹。
			folder.open(Folder.READ_ONLY);
			Message[] messages = folder.getMessages();
			for (Message message : messages) {
				System.out.println(message.getSubject());
			}
			logger.info("接收邮件成功!!");
		} catch (MessagingException e) {
			String msg = "接收邮件失败!!";
			logger.error(msg);
			throw new RuntimeException(msg);
		}
		
	}
完整代码下载地址:https://github.com/wasapii/JavaMailDemo/

相关标签: java javamail