zoukankan      html  css  js  c++  java
  • JavaMail简单应用

    版权声明:本文为博主原创文章,未经博主同意不得转载。

    --caicongyang https://blog.csdn.net/caicongyang/article/details/33731395

    1.简单介绍:

    JavaMail 是由Sun定义的一套收发电子邮件的API。不同的厂商能够提供自己的实现类。

    但它并没有包括在JDK中,须要自己单独导入。

    2.jar

    mail.jar:此JAR文件包括JavaMail API和Sun提供的SMTP、IMAP和POP3服务提供程序。
    activation.jar:此JAR文件包括JAF API和Sun的实现。

    3.demo

    MailSenderInfo.java

    package com.ccy.util.mail;
    
    import java.util.Properties;
    
    public class MailSenderInfo {
    	// 发送邮件的server的IP和端口
    	private String mailServerHost;
    	private String mailServerPort = "25";
    	// 邮件发送者的地址
    	private String fromAddress;
    	// 邮件接收者的地址
    	private String toAddress;
    	// 登陆邮件发送server的username与password
    	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;
    	}
    
    }
    


    MyAuthenticator.java
    package com.ccy.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.java

    package com.ccy.util.mail;
    
    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);
    			// 创建邮件发送者地址
    			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);
    			// 发送邮件
    			Transport.send(mailMessage);
    			return true;
    		} catch (MessagingException ex) {
    			ex.printStackTrace();
    		}
    		return false;
    	}
    
    	/** */
    	/**
    	 * 以HTML格式发送邮件
    	 * 
    	 * @param mailInfo
    	 *            待发送的邮件信息
    	 */
    	public static 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 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;
    	}
    
    	public void send() {
    		// 这个类主要是设置邮件
    		MailSenderInfo mailInfo = new MailSenderInfo();
    		// mailInfo.setMailServerHost("smtp.163.com");
    		// mailInfo.setMailServerHost("smtp.qq.com");
    		mailInfo.setMailServerHost("smtp.139.com");
    		mailInfo.setMailServerPort("25");
    		mailInfo.setValidate(true);
    		mailInfo.setUserName("user@139.com");
    		mailInfo.setPassword("password");// 您的邮箱密码
    		mailInfo.setFromAddress("user@139.com");
    		mailInfo.setToAddress("To@qq.com");
    		mailInfo.setSubject("主题");
    		String body = "请Tom.Cai明天中午3点到总部开会!

    "; mailInfo.setContent(body); // 这个类主要来发送邮件 SimpleMailSender sms = new SimpleMailSender(); sms.sendTextMail(mailInfo);// 发送文体格式 } }


    欢迎大家一起讨论学习!

    实用的自己收!

    记录与分享,让你我共成长!欢迎查看我的其它博客。我的博客地址:http://blog.csdn.net/caicongyang





  • 相关阅读:
    UU跑腿
    Java基础之接口与抽象类的区别
    经典面试题:Redis为什么这么快?
    isBlank与isEmpty
    阅读联机API文档
    从文本中取出链接地址 并检测链接地址能否打开
    2019-01-19=树莓派学习总结
    单片机知识点
    Linux 编程题
    嵌入式基础知识
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10659143.html
Copyright © 2011-2022 走看看