JavaEmail发邮件

  1. import java.util.Map;
    import java.util.Properties;
    
    /** 
    * 发送邮件需要使用的基本信息 
    */ 
    public class MailSenderInfo { 
    	// 发送邮件的服务器的IP和端口 
    	private String mailServerHost;
    	private String mailServerPort = "25"; 
    	// 邮件发送者的地址 
    	private String fromAddress; 
    	// 邮件接收者的地址 
    	private String toAddress; 
    	// 登陆邮件发送服务器的用户名和密码 
    	private String userName; 
    	private String password; 
    	// 是否需要身份验证 
    	private boolean validate = false; 
    	// 邮件主题 
    	private String subject; 
    	// 邮件的文本内容 
    	private String content; 
    	// 邮件附件的文件名 
    	private String[] attachFileNames;
    	//保存附件的文件名和地址
    	private Map<String, String> map;
    	//附件名称
    	private String affixName;
    	//附件地址
    	private String affixAddress;
    	
    	public String getAffixName() {
    		return affixName;
    	}
    	public void setAffixName(String affixName) {
    		this.affixName = affixName;
    	}
    	public String getAffixAddress() {
    		return affixAddress;
    	}
    	public void setAffixAddress(String affixAddress) {
    		this.affixAddress = affixAddress;
    	}
    	public Map<String, String> getMap() {
    		return map;
    	}
    	public void setMap(Map<String, String> map) {
    		this.map = map;
    	}
    	/** 
    	  * 获得邮件会话属性 
    	  */ 
    	public Properties getProperties(){ 
    	  Properties p = new Properties(); 
    	  p.put("mail.smtp.host", this.mailServerHost); 
    	  p.put("mail.smtp.port", this.mailServerPort); 
    	  p.put("mail.smtp.auth", validate ? "true" : "false"); 
    	  return p; 
    	} 
    	public String getMailServerHost() { 
    	  return mailServerHost; 
    	} 
    	public void setMailServerHost(String mailServerHost) { 
    	  this.mailServerHost = mailServerHost; 
    	}
    	public String getMailServerPort() { 
    	  return mailServerPort; 
    	}
    	public void setMailServerPort(String mailServerPort) { 
    	  this.mailServerPort = mailServerPort; 
    	}
    	public boolean isValidate() { 
    	  return validate; 
    	}
    	public void setValidate(boolean validate) { 
    	  this.validate = validate; 
    	}
    	public String[] getAttachFileNames() { 
    	  return attachFileNames; 
    	}
    	public void setAttachFileNames(String[] fileNames) { 
    	  this.attachFileNames = fileNames; 
    	}
    	public String getFromAddress() { 
    	  return fromAddress; 
    	} 
    	public void setFromAddress(String fromAddress) { 
    	  this.fromAddress = fromAddress; 
    	}
    	public String getPassword() { 
    	  return password; 
    	}
    	public void setPassword(String password) { 
    	  this.password = password; 
    	}
    	public String getToAddress() { 
    	  return toAddress; 
    	} 
    	public void setToAddress(String toAddress) { 
    	  this.toAddress = toAddress; 
    	} 
    	public String getUserName() { 
    	  return userName; 
    	}
    	public void setUserName(String userName) { 
    	  this.userName = userName; 
    	}
    	public String getSubject() { 
    	  return subject; 
    	}
    	public void setSubject(String subject) { 
    	  this.subject = subject; 
    	}
    	public String getContent() { 
    	  return content; 
    	}
    	public void setContent(String textContent) { 
    	  this.content = textContent; 
    	} 
    } 
    
     2.
    import javax.mail.*;
      
    public class MyAuthenticator extends Authenticator{
    	String userName=null;
    	String password=null;
    	 
    	public MyAuthenticator(){
    	}
    	public MyAuthenticator(String username, String password) { 
    		this.userName = username; 
    		this.password = password; 
    	} 
    	protected PasswordAuthentication getPasswordAuthentication(){
    		return new PasswordAuthentication(userName, password);
    	}
    }
     
     3.
    import java.util.Date; 
    import java.util.Properties;
    
    import javax.activation.DataHandler;
    import javax.activation.DataSource;
    import javax.activation.FileDataSource;
    import javax.mail.Address; 
    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 SimpleMailSender  { 
    /** 
      * 以文本格式发送邮件 
      * @param mailInfo 待发送的邮件的信息 
      */ 
    	public boolean sendTextMail(MailSenderInfo mailInfo) { 
    	  // 判断是否需要身份认证 
    	  MyAuthenticator authenticator = null; 
    	  Properties pro = mailInfo.getProperties();
    	  if (mailInfo.isValidate()) { 
    	  // 如果需要身份认证,则创建一个密码验证器 
    		authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); 
    	  }
    	  // 根据邮件会话属性和密码验证器构造一个发送邮件的session 
    	  Session sendMailSession = Session.getDefaultInstance(pro,authenticator); 
    	  try { 
    	  // 根据session创建一个邮件消息 
    	  Message mailMessage = new MimeMessage(sendMailSession); 
    	  // 创建邮件发送者地址 
    	  Address from = new InternetAddress(mailInfo.getFromAddress()); 
    	  // 设置邮件消息的发送者 
    	  mailMessage.setFrom(from); 
    	  // 创建邮件的接收者地址,并设置到邮件消息中 
    	  Address to = new InternetAddress(mailInfo.getToAddress()); 
    	  mailMessage.setRecipient(Message.RecipientType.TO,to); 
    	  // 设置邮件消息的主题 
    	  mailMessage.setSubject(mailInfo.getSubject()); 
    	  // 设置邮件消息发送的时间 
    	  mailMessage.setSentDate(new Date()); 
    	  // 设置邮件消息的主要内容 
    	  String mailContent = mailInfo.getContent(); 
    
    	// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
          Multipart multipart = new MimeMultipart();         
          
        //添加附件
          MimeBodyPart mbt1= new MimeBodyPart();
          DataSource source = new FileDataSource(mailInfo.getAffixAddress());
          //添加附件的内容
          mbt1.setDataHandler(new DataHandler(source));
          //添加附件的标题
          //这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码
          sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
          mbt1.setFileName("=?GBK?B?"+enc.encode(mailInfo.getAffixName().getBytes())+"?=");
          //放入邮件正文内容
          MimeBodyPart mbt2= new MimeBodyPart();
          mbt2.setText(mailContent);
          
          multipart.addBodyPart(mbt2);
          multipart.addBodyPart(mbt1);
        
          //将multipart对象放到message中
          mailMessage.setContent(multipart);
    
    	  // 发送邮件 
    	  Transport.send(mailMessage);
    	  return true; 
    	  } catch (MessagingException ex) { 
    		  ex.printStackTrace(); 
    	  } 
    	  return false; 
    	} 
    	
    	/** 
    	  * 以HTML格式发送邮件 
    	  * @param mailInfo 待发送的邮件信息 
    	  */ 
    	public boolean sendHtmlMail(MailSenderInfo mailInfo){ 
    	  // 判断是否需要身份认证 
    	  MyAuthenticator authenticator = null;
    	  Properties pro = mailInfo.getProperties();
    	  //如果需要身份认证,则创建一个密码验证器  
    	  if (mailInfo.isValidate()) { 
    		authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
    	  } 
    	  // 根据邮件会话属性和密码验证器构造一个发送邮件的session 
    	  Session sendMailSession = Session.getDefaultInstance(pro,authenticator); 
    	  try { 
    	  // 根据session创建一个邮件消息 
    	  Message mailMessage = new MimeMessage(sendMailSession); 
    	  // 创建邮件发送者地址 
    	  Address from = new InternetAddress(mailInfo.getFromAddress()); 
    	  // 设置邮件消息的发送者 
    	  mailMessage.setFrom(from); 
    	  // 创建邮件的接收者地址,并设置到邮件消息中 
    	  Address to = new InternetAddress(mailInfo.getToAddress()); 
    	  // Message.RecipientType.TO属性表示接收者的类型为TO 
    	  mailMessage.setRecipient(Message.RecipientType.TO,to); 
    	  // 设置邮件消息的主题 
    	  mailMessage.setSubject(mailInfo.getSubject()); 
    	  // 设置邮件消息发送的时间 
    	  mailMessage.setSentDate(new Date()); 
    	  // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象 
    	  Multipart multipart = new MimeMultipart(); 
    	  // 创建一个包含HTML内容的MimeBodyPart 
    	  BodyPart html = new MimeBodyPart(); 
    	  // 设置HTML内容 
    	  html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
    	   
          multipart.addBodyPart(html);
       
       // 将MiniMultipart对象设置为邮件内容 
    	  mailMessage.setContent(multipart); 
    	  // 发送邮件 
    	  Transport.send(mailMessage); 
    	  return true; 
    	  } catch (MessagingException ex) { 
    		  ex.printStackTrace(); 
    	  } 
    	  return false; 
    	} 
    } 
     4.
    public class SendEmailTest {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args){
    		System.out.println("正在发送邮件...");
            //这个类主要是设置邮件
    		MailSenderInfo mailInfo = new MailSenderInfo(); 
    		mailInfo.setMailServerHost("smtp.163.com");//smtp服务器
    		mailInfo.setMailServerPort("25");//服务器端口
    		mailInfo.setValidate(true);//需要验证
    		mailInfo.setUserName("[email protected]");//用户名
    		mailInfo.setPassword("******");//您的邮箱密码 
    		mailInfo.setFromAddress("[email protected]");//发送人
    		mailInfo.setToAddress("[email protected]");//收件人
    		mailInfo.setSubject("设置邮箱标题");//邮件标题
    		mailInfo.setContent("设置邮箱内容");//邮件内容
    		mailInfo.setAffixAddress("c:/yanqihubian.txt");//附件地址
    		mailInfo.setAffixName("中文标题123Xxx.txt");//附件名称
    		//这个类主要来发送邮件
    		SimpleMailSender sms = new SimpleMailSender();
    		boolean flag = sms.sendTextMail(mailInfo);//发送文体格式 
    //		boolean flag = sms.sendHtmlMail(mailInfo);//发送HTML格式
    		if (flag)
    			System.out.println("发送邮件完毕!!!");
    		else
    			System.out.println("邮件发送失败!!!");
    	}
    }
    
     

你可能感兴趣的:(email)