java 发送邮件实例

本篇文章全部是代码,可以直接复制使用。

MailSenderInfo:

package com.wswhr.LoginServer.util.mail;


import java.util.Properties;

public class MailSenderInfo {
	
	// 发送邮件的服务器的IP和端口    
    private String mailServerHost;    
    private String mailServerPort = "25";    
    
    // 邮件发送者的地址    
    private String fromAddress;
    private String fromAddressShow;
    
    public String getFromAddressShow() {
		return fromAddressShow;
	}
	public void setFromAddressShow(String fromAddressShow) {
		this.fromAddressShow = fromAddressShow;
	}
	// 邮件接收者的地址    
    private String toAddress;    
    // 登陆邮件发送服务器的用户名和密码    
    private String userName;    
    private String password;    
    // 是否需要身份验证    
    
    private boolean validate = false;    
    // 邮件主题    
    private String subject;    
    // 邮件的文本内容    
    private String content;    
    // 邮件附件的文件名    
    private String[] attachFileNames;    
    
    /** *//**   
      * 获得邮件会话属性   
      */    
    
    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;    
    }    

}
MailService:

package com.wswhr.LoginServer.util.mail;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;

import com.wswhr.LoginServer.util.mail.MailSenderInfo;
import com.wswhr.LoginServer.util.mail.SimpleMailSender;

@Service
public class MailService {

	public boolean sendMail(String toAddres, String title, String content) {
		try {
			Map<String,String> mail = getServiceInfoByMainProperties("aliyun");
			MailSenderInfo mailInfo = new MailSenderInfo();
			mailInfo.setMailServerHost(mail.get("smtpaddress"));
			mailInfo.setMailServerPort(mail.get("smtpport"));
			mailInfo.setValidate(true);
			mailInfo.setUserName(mail.get("username"));
			mailInfo.setPassword(mail.get("password"));//您的邮箱密码

			mailInfo.setFromAddress(mail.get("fromemail"));
			mailInfo.setFromAddressShow("wswhr@wswhr.com");
			mailInfo.setToAddress(toAddres);
			mailInfo.setSubject(title);
			mailInfo.setContent(content);
			SimpleMailSender sms = new SimpleMailSender();
			sms.sendTextMail(mailInfo);// 发送html格式
		} catch (Exception ex) {
			ex.printStackTrace();
			return false;
		}
		return true;
	}

	public boolean sendTextMail(String toAddres, String title, String content) {
		try {
			Map<String,String> mail = getServiceInfoByMainProperties("aliyun");
			MailSenderInfo mailInfo = new MailSenderInfo();
			mailInfo.setMailServerHost(mail.get("smtpaddress"));
			mailInfo.setMailServerPort(mail.get("smtpport"));
			mailInfo.setValidate(true);
			mailInfo.setUserName(mail.get("username"));
			mailInfo.setPassword(mail.get("password"));// 您的邮箱密码

			mailInfo.setFromAddress(mail.get("fromemail"));
			mailInfo.setFromAddressShow("wswhr@wswhr.com");
			mailInfo.setToAddress(toAddres);
			mailInfo.setSubject(title);
			mailInfo.setContent(content);
			SimpleMailSender sms = new SimpleMailSender();
			sms.sendTextMail(mailInfo);// 发送html格式

		} catch (Exception ex) {
			ex.printStackTrace();
			return false;
		}
		return true;
	}
	
	private static Map<String,String> getServiceInfoByMainProperties(String mailType){
		ClassPathResource cr = new ClassPathResource("mail.properties");// 会重新加载spring框架
		Properties pros = new Properties();
		Map<String,String> mailInfo = new HashMap<String,String>() ;
		
		try {
			pros.load(cr.getInputStream());
			if(mailType.equals("aliyun")){
				mailInfo.put("smtpaddress", pros.getProperty("aliyun.smtpaddress"));
				mailInfo.put("smtpport", pros.getProperty("aliyun.smtpport"));
				mailInfo.put("fromemail", pros.getProperty("aliyun.fromemail"));
				mailInfo.put("username", pros.getProperty("aliyun.username"));
				mailInfo.put("password", pros.getProperty("aliyun.password"));
			}else if(mailType.equals("qq")){
				mailInfo.put("smtpaddress", pros.getProperty("qq.smtpaddress"));
				mailInfo.put("smtpport", pros.getProperty("qq.smtpport"));
				mailInfo.put("fromemail", pros.getProperty("qq.fromemail"));
				mailInfo.put("username", pros.getProperty("qq.username"));
				mailInfo.put("password", pros.getProperty("qq.password"));
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return mailInfo;
	}

}

MyAuthenticator:

package com.wswhr.LoginServer.util.mail;

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

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);   
    }   
}   

SimpleMailSender:

package com.wswhr.LoginServer.util.mail;

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

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);
      
      //设置中文发件人
      String name = "";
      name=javax.mail.internet.MimeUtility.encodeText("系统管理员");
      
      // 创建邮件发送者地址    
      Address from = new InternetAddress(mailInfo.getFromAddress());    
      // 设置邮件消息的发送者    
      
      mailMessage.setFrom(new InternetAddress(name+" <"+from+">"));    
      //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();    
      mailMessage.setText(mailContent);    
      // 发送邮件    
      Transport.send(mailMessage);  
      return true;    
      } catch (MessagingException ex) {    
          ex.printStackTrace();    
      } catch (UnsupportedEncodingException e) {
		e.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 = null;
      if(mailInfo.getFromAddressShow()!=null && !mailInfo.getFromAddressShow().equals("")){
    	  try {
			from = new InternetAddress(mailInfo.getFromAddress(),mailInfo.getFromAddressShow());
		} catch (UnsupportedEncodingException e) {			
			e.printStackTrace();
		} 
      }else{
    	  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 mainPart = new MimeMultipart();    
      // 创建一个包含HTML内容的MimeBodyPart    
      BodyPart html = new MimeBodyPart();    
      // 设置HTML内容    
      html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");    
      mainPart.addBodyPart(html);    
      // 将MiniMultipart对象设置为邮件内容    
      mailMessage.setContent(mainPart);    
      // 发送邮件    
      Transport.send(mailMessage);    
      return true;    
      } catch (MessagingException ex) {    
          ex.printStackTrace();    
      }    
      return false;    
    }    
}   

Test:

package com.wswhr.LoginServer.util.mail;

public class Test {

	public static void main(String[] args) {
		MailService m = new MailService();
		m.sendMail("1286238812@qq.com", "测试邮件发送", "发送成功");
		// 这个类主要是设置邮件

//		MailSenderInfo mailInfo = new MailSenderInfo();
//
//		mailInfo.setMailServerHost("smtp.wswhr.com");
//		mailInfo.setMailServerPort("25");
//		mailInfo.setValidate(true);
//
//		mailInfo.setUserName("wswhr@wswhr.com");
//		mailInfo.setPassword("    ");// 您的邮箱密码
//
//		mailInfo.setFromAddress("wswhr@wswhr.com");
//		mailInfo.setToAddress("1286238812@qq.com");
//		mailInfo.setSubject("test111");
//		mailInfo.setContent("德玛西亚666");
//		// 这个类主要来发送邮件
//		SimpleMailSender sms = new SimpleMailSender();
//		sms.sendTextMail(mailInfo);// 发送文体格式
//		sms.sendHtmlMail(mailInfo);// 发送html格式

	}

}

mail.properties:

# wswhr@wswhr.com  1286238812@qq.com
# 如果用阿里企业邮箱,则,邮箱地址是,smtp.mxhichina.com    /  或者  自己的邮箱地址,比如我的域名是wswhr.com ,则邮箱地址是,smtp.wswhr.com
# 腾讯的邮箱 smtp.qq.com


# 阿里云邮箱配置
aliyun.smtpaddress=smtp.mxhichina.com
aliyun.smtpport=25
aliyun.fromemail=hr@wswhr.com
# 用户名
aliyun.username=hr@wswhr.com
# 密码
aliyun.password=   
最后的密码,是你的邮箱登录密码。




上一篇:VB编程:Static 静态变量实现计数功能实例-1


下一篇:阿里云数字新基建系列:云原生操作系统Kubernetes-第1章(2)