java spring 邮件发送系统(批量发送)

最近在研究一个给注册用户发送邮件激活账户的小功能

用到了一个邮件发送功能,由于项目使用ssh,所以就想到用spring和javamail来实现


下面我直接贴上主要代码


import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

public class emailsender {
	private JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
	private Properties javaMailProperties = new Properties();
	private MimeMessageHelper help;
	private MimeMessage message;
	
	private static Map map= new HashMap();
	//创建会话对象
	static{
		Properties prop = new Properties();
		try{
			System.out.println("sasas");
			//读取属性文件a.properties
			//InputStream in = new BufferedInputStream (new FileInputStream("src/email.properties")); 应用程序指定
			InputStream in = new BufferedInputStream (new FileInputStream(new File("").getAbsolutePath()+"\\workspace\\Enterprise_message_board\\build\\classes\\email.properties"));
			//加载属性列表
			prop.load(in);
			//map = prop;
			Iterator<String> it=prop.stringPropertyNames().iterator();
			while(it.hasNext()){
				String key=it.next();
				map.put(key,prop.getProperty(key));
				System.out.println(key+":"+map.get(key));
			}
			
			
			in.close();
			
	//		//这里随便记下 保存(写入)属性到b.properties文件
	//		FileOutputStream fos = new FileOutputStream("b.properties", true);//true表示追加打开
	//		prop.setProperty("phone", "10086");
	//		prop.store(fos, "The New properties file");
	//		fos.close();
			
		}catch(Exception e){
			System.out.println(e);
		}
	}
	//初始化发送信息以及服务器参数
	public emailsender(){
		System.out.println("这里标记1");
		this.mailSender.setHost((String) map.get("host"));  
		this.mailSender.setPort((int)(Integer.parseInt((String) map.get("port"))));  
		this.mailSender.setUsername((String) map.get("username"));  
		this.mailSender.setPassword((String) map.get("password"));
		System.out.println(map.get("mail.smtp.auth"));
		this.javaMailProperties.put("mail.smtp.auth", map.get("mail.smtp.auth"));
		this.javaMailProperties.put("mail.smtp.starttls.enable",map.get("mail.smtp.starttls.enable"));
		//将参数properties,加入到初始化信息中
		this.mailSender.setJavaMailProperties(this.javaMailProperties);  
        //创建会话对象
        this.message = this.mailSender.createMimeMessage();  
        try {
			this.help = new MimeMessageHelper(this.message, true, "UTF-8");
			this.help.setFrom((String)map.get("fromer")); 
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        //设置发送者邮箱
	}
	public void senderemail(String content,String[] email){      
        //需要发送的邮箱号码数据    
        try {
        	//发送给谁
			this.help.setTo(email);
			//发送的主题
	        this.help.setSubject("测试java的邮件系统");   
	        //发送的主题
	        this.help.setText(content, true);
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
        System.out.println("正在发送邮件,请稍后!。。。。。。");
        mailSender.send(message);
        System.out.println("邮件发送成功");
	}
}
其中需要说明的是,配置文件的路劲,大家可以根据自己需求修改吧。


还有就是发送的email的地址是数组,即可以实现批量发送邮件

而邮件的内容可以是html代码哦

测试代码,我也帖以一下吧:


public static void main(String[] args) throws MessagingException {
		emailsender es = new emailsender();
		String[] email={"XXX@qq.com","XXX@qq.com","XXX@qq.com"};
		es.senderemail("测试批量发送邮件哦<br><a href='https://www.bugkong.com/'>028888.net</a>", email);
	}

配置文件email的内容如下:


host = smtp.qq.com
port = 25
username = XXXX@028888.net
password = 密码
mail.smtp.auth = true 需要验证
mail.smtp.starttls.enable = true
fromer = XXXX@028888.net



再次说明下,在ssh框架中,主要的jar包请直接放在lib目录下。


如果是本地java application测试,则可以放在lib下的其他文件夹下,或其他文件夹下。

本实例用到主要jar包括spring的一个jar包,这个jar通常已经被你导入了

javamail的6个jar包

所有的7个jar包您可以点击这里下载  1snu


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img