java email 发送

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java email 发送相关的知识,希望对你有一定的参考价值。

邮件服务是一般系统的基本功能,本例使用163免费邮箱发送

1.邮件信息类(MailSenderInfo )

package sendEmail.email;

import java.util.Properties;

/**
 * 邮件信息设置
 * @author Administrator
 *
 */
public class MailSenderInfo {

	private String mailServerHost ; //发送邮件主机
	private String mailServerPort ; //发送端口
	
	private String fromAddress ; //邮件发送者的地址(邮箱)
	private String toAddress ; //接收者的地址(邮箱)
	
	//登录邮件发送服务器的用户名和密码
	private String userName ;
	private String passwrod ;
	
	//是否需要身份验证
	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.sender.username", userName);
		p.put("mail.sender.password", passwrod);
		
		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 String getFromAddress() {
		return fromAddress;
	}

	public void setFromAddress(String fromAddress) {
		this.fromAddress = fromAddress;
	}

	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 getPasswrod() {
		return passwrod;
	}

	public void setPasswrod(String passwrod) {
		this.passwrod = passwrod;
	}

	public boolean isValidate() {
		return validate;
	}

	public void setValidate(boolean validate) {
		this.validate = validate;
	}

	public String getSubject() {
		return subject;
	}

	public void setSubject(String subject) {
		this.subject = subject;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public String[] getAttachFileNames() {
		return attachFileNames;
	}

	public void setAttachFileNames(String[] attachFileNames) {
		this.attachFileNames = attachFileNames;
	}
	
	
	
	
}

 2. 服务类(SimpleMailSender) 

package sendEmail.email;

import java.util.Date;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.BodyPart;    
import javax.mail.MessagingException;    
import javax.mail.Multipart;    
import javax.mail.Transport;    
import javax.mail.internet.InternetAddress;    
import javax.mail.internet.MimeBodyPart;    
import javax.mail.internet.MimeMessage;    
import javax.mail.internet.MimeMultipart;  
/**
 * 发送邮件格式设置 
 * @author Administrator
 *
 */
public class SimpleMailSender {

	/**   
	  * 以(text)(文本格)式发送邮件   
	  * @param mailInfo 待发送的邮件的信息   
	  */    
	public boolean sendTextMail(MailSenderInfo mailInfo){
		Properties pro = mailInfo.getProperties();
		Session sendMailSession = Session.getInstance(pro) ;   
		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();    
		      mailMessage.setText(mailContent);    
		      // 发送邮件    
		      mailMessage.saveChanges();
		      Transport transport = sendMailSession.getTransport("smtp");
		      transport.connect(mailInfo.getMailServerHost(), mailInfo.getUserName(), mailInfo.getPasswrod());
		      transport.sendMessage(mailMessage,mailMessage.getAllRecipients());   
		      return true;    
		      
		      } catch (MessagingException ex) {    
		          ex.printStackTrace();    
		      }    
	    	return false;   
	}
	
	 

/**   
* 以html格式发送邮件   
* @param mailInfo 待发送的邮件信息   
*/    
	public static boolean sendHtmlMail(MailSenderInfo mailInfo){    
		
		 Properties pro = mailInfo.getProperties();   
		 // 根据邮件会话属性和密码验证器构造一个发送邮件的session    
		 Session sendMailSession = Session.getDefaultInstance(pro);    
		 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 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);    
		 // 发送邮件    
		 mailMessage.saveChanges();
	     Transport transport = sendMailSession.getTransport("smtp");
	     transport.connect(mailInfo.getMailServerHost(), mailInfo.getUserName(), mailInfo.getPasswrod());
	     transport.sendMessage(mailMessage,mailMessage.getAllRecipients()); 
		 return true;    
		 } catch (MessagingException ex) {    
		     ex.printStackTrace();    
		 }    
		 return false;    
	}    
}

  3.测试类(MailTest)

package sendEmail.email;
/**
 * 测试类
 * @author Administrator
 *
 */
public class MailTest {

	public static void main(String[] args) {
		//设置邮件
		try {
			MailSenderInfo mainInfo = new MailSenderInfo();
			mainInfo.setMailServerHost("smtp.163.com");
			mainInfo.setValidate(true);
			mainInfo.setUserName("**************");
			mainInfo.setPasswrod("********");
			mainInfo.setFromAddress("********");    
			mainInfo.setToAddress("********");    
			mainInfo.setSubject("lalalala");
			mainInfo.setContent("----");   
			SimpleMailSender.sendHtmlMail(mainInfo);//发送文体格式   
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

  注意:

mainInfo.setPasswrod("********"); 不是登录163邮箱的密码,是163邮箱授权码。

以上是关于java email 发送的主要内容,如果未能解决你的问题,请参考以下文章

在mail_admins()中发送EmailMultiAlternatives

Java Android - 将数据从活动发送到片段

JAVA 使用qq邮箱发送邮件

用python实现自动发邮件的功能

Java发送Email

我应该如何使用 Outlook 发送代码片段?