javaMail2种方式实现,并读取html格式邮件模板

首先是邮件模板的读取工具类

package gamutsoft.mail.test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

public class ReadHTML {

	/**
	 * @param args
	 */
	//public static void main(String[] args) {
		// TODO Auto-generated method stub
	public static String reMailString(){
		//String info="";
		StringBuffer buff=new StringBuffer();
		InputStreamReader in=null;
		BufferedReader br=null;
		String path = System.getProperty("user.dir") + "/src/html/email2.html";
		File file=new File(path);
		try {
			in=new InputStreamReader(new FileInputStream(file));
			br=new BufferedReader(in);
			String line=null;
			while((line=br.readLine()) != null){
				//System.out.println(line);
				buff.append(line).append("\n");
			}
			
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(in!=null){
				try {
					in.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(br!=null){
				try {
					br.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		
		return buff.toString();
	}

}





邮件的html模板:

email2.html(乱写的不喜勿喷)






	

您好:

网易
欢迎光临,呵呵呵呵呵呵呵呵额
十分感谢

您好:

网易
欢迎光临,呵呵呵呵呵呵呵呵额
十分感谢

您好:

网易
欢迎光临,呵呵呵呵呵呵呵呵额
十分感谢

您好:

网易
欢迎光临,呵呵呵呵呵呵呵呵额
十分感谢

您好:

网易

邮件发送类:这里的邮箱是为了自己的隐私我乱写了下,如果测试的话还得填写正确的

package gamutsoft.mail.test;

import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class MailTest1 {
	
	
	   public static void send() throws MessagingException, UnsupportedEncodingException {
		   
		   String info=ReadHTML.reMailString();
		   
		    //邮件服务器
		   String host="smtp.163.com";
			//发件人
		   String from="[email protected]";
			//收件人
		   String to="[email protected]";
		   //抄送人
		   String toCC1="[email protected]";
		   String toCC2="[email protected]";
		   String username="[email protected]";
		   String password="51234";
			//邮件会话属性
			//Properties  p=System.getProperties();
		   Properties  p=new Properties();
		   	p.put("mail.smtp.host", host);
		   	/*
			   	p.put("mail.smtp.auth", "true");
			   	//创建一个密码验证器
			   	Authenticator auth = new MyAuthenticator(username, password);
			   	//获得Session
			    Session session=Session.getDefaultInstance(p,auth);
		   */
		   	//sesion获得Transprot方法
		   Session session=Session.getDefaultInstance(p,null);
		   		session.setDebug(true);
		   	
		   	/
		   //创建Message信息
		   MimeMessage message=new MimeMessage(session);
		   //创建邮件发送者地址
		   Address fromAD = new InternetAddress(from,"李建勋");
		   //nternetAddress(from)
		   //设置邮件发送者
					message.setFrom(fromAD);	
		   //创建邮件的接收地址
		   Address toAD = new InternetAddress(to);
		   //创建抄送人数组
		   Address toCAD1=new InternetAddress(toCC1);
		   Address toCAD2=new InternetAddress(toCC2);
		   Address [] toCs={toCAD1,toCAD2};
		   //设置邮件的接收地址
					message.setRecipient(Message.RecipientType.TO,toAD);
					message.addRecipients(Message.RecipientType.CC,toCs );
			//设置发送时间
					message.setSentDate(new Date());
		   	//设置主题	
					message.setSubject("Hello JavaMail44");	
			/*
			   	//设置消息正文,文本  		
						message.setText("Welcome To JavaMail");
				//设置HTML内容
						message.setContent("百度","text/html;charset=utf-8");
			*/	
			// MimeMultipart类是一个容器类,包含MimeBodyPart类型的对象    	
			Multipart mainPart = new MimeMultipart();  
			//创建一个包含HTML内容的MimeBodyPart
			BodyPart body=new MimeBodyPart();
			//设置html内容
				body.setContent(info,"text/html;charset=utf-8");
			//将MimeMultipart设置为邮件内容
				mainPart.addBodyPart(body);
				message.setContent(mainPart);
			///sesion获得Transprot
			Transport transport=session.getTransport("smtp");
		   		transport.connect(host, username, password);
		   		transport.sendMessage(message,message.getAllRecipients());
		   		transport.close();
		   		
			//
			
			//	Transport.send(message);
			
		   
	   }
	   public static void main(String[] args) throws MessagingException, UnsupportedEncodingException  {
			// TODO Auto-generated method stub
		  send();
		}
     
 
		
	
	
	
}

接下来是MyAuthenticator类

package gamutsoft.mail.test;

import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;

public class MyAuthenticator extends Authenticator{
	/*在使用Authenticator这个抽象类时,我们必须采用继承该抽象类的方式,并且该继承类必须具
	 * 有返回PasswordAuthentication对象(用于存储认证时要用到的用户名、密码)getPasswordAuthentication()
	 * 方法。并且要在Session中进行注册,使Session能够了解在认证时该使用哪个类。 
	 * */
	String username=null;
	String password=null;
	public MyAuthenticator(){
		
	}
	public MyAuthenticator(String username,String password){
		this.username=username;
		this.password=password;
	}
	public PasswordAuthentication getPasswordAuthentication(){
		
		return new PasswordAuthentication(username, password);
	}
	
	
}


这样的写法,可以提供我们在外部写模板,并且根据不同的客户发送不同的邮件,代码写的比较快,比较粗糙,还望读者见谅




你可能感兴趣的:(J2EE)