javaMail 发送邮件

import org.springframework.stereotype.Service;

import javax.mail.*;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;

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

/**
 * 简单邮件(不带附件的邮件)发送器
 */
@Service
public class SimpleMailSenderService {
	
	private static String mailServerHost = "XXXX.163.com";//可以是163邮箱的地址

	private static String mailServerPort = "25";
   
	private static String sendUserName = "***.163.com";//

	private static String sendUserPassword ="123456" ;//
	
	private static String sendMailProtocol = PropertiesUtil.sendMailProtocol ;邮件发送协议 
	

	/**
	 * 文本格式发送邮件
	 * 
	 * @param addArray
	 *            目标地址数组
	 * @param subject
	 *            主题
	 * @param content
	 *            内容
	 * @return
	 */
	public static boolean sendTextMail(Address[] addArray, String subject, String content) throws Exception {
		// 判断是否需要身份认证
		MyAuthenticator authenticator = null;

		// 如果需要身份认证,则创建一个密码验证器
		authenticator = new MyAuthenticator(sendUserName, sendUserPassword);

		Properties p = new Properties();
		p.put("mail.smtp.host", mailServerHost);
		p.put("mail.smtp.port", mailServerPort);
		p.put("mail.smtp.auth", true);

		// 根据邮件会话属性和密码验证器构造一个发送邮件的session
		Session sendMailSession = Session.getDefaultInstance(p, authenticator);
		try {
			// 根据session创建一个邮件消息
			Message mailMessage = new MimeMessage(sendMailSession);
			// 创建邮件发送者地址
			Address from = new InternetAddress(sendUserName);
			// 设置邮件消息的发送者
			mailMessage.setFrom(from);
			// 创建邮件的接收者地址,并设置到邮件消息中
			mailMessage.setRecipients(Message.RecipientType.TO, addArray);
			// 设置邮件消息的主题
			mailMessage.setSubject(subject);
			// 设置邮件消息发送的时间
			mailMessage.setSentDate(new Date());
			// 设置邮件消息的主要内容
			mailMessage.setText(content);
			// 发送邮件
			Transport.send(mailMessage);
			return true;
		} catch (MessagingException ex) {
			throw new Exception(ex.getMessage(), ex);
		}
	}

	/**
	 * 以HTML格式发送邮件
	 * 
	 * @param mailInfo
	 *            待发送的邮件信息
	 * @throws MessagingException 
	 * @throws UnsupportedEncodingException 
	 */
public static void sendHtmlMail(String to, String subject, String messageText) throws MessagingException, UnsupportedEncodingException  {
			// Step 1: Configure the mail session
			java.util.Properties props = new java.util.Properties();
			props.setProperty("mail.smtp.auth", "true");// 指定是否需要SMTP验证
			props.setProperty("mail.smtp.host", mailServerHost);// 指定SMTP服务器
			props.put("mail.transport.protocol", sendMailProtocol);//邮件发送协议 
			Session mailSession = Session.getDefaultInstance(props);
			mailSession.setDebug(true);// 是否在控制台显示debug信息

			// Step 2: Construct the message
			InternetAddress fromAddress = new InternetAddress(sendUserName);
			InternetAddress toAddress = new InternetAddress(to);

			MimeMessage testMessage = new MimeMessage(mailSession);
			testMessage.setFrom(fromAddress);
			testMessage.addRecipient(javax.mail.Message.RecipientType.TO, toAddress);
			testMessage.setSentDate(new java.util.Date());
			testMessage.setSubject(MimeUtility.encodeText(subject, "gb2312", "B"));

			testMessage.setContent(messageText, "text/html;charset=gb2312");

			// Step 3: Now send the message
			Transport transport = mailSession.getTransport("smtp");
			transport.connect(mailServerHost, sendUserName, sendUserPassword);
			transport.sendMessage(testMessage, testMessage.getAllRecipients());
			transport.close();
			
}

    /**
	 * 以HTML格式发送多人邮件
	 * 
	 * @param mailInfo
	 *            待发送的邮件信息
	 * @throws MessagingException 
	 * @throws UnsupportedEncodingException 
	 */
public static void sendHtmlMailMore(List<InternetAddress> to, String subject, String messageText) throws MessagingException, UnsupportedEncodingException  {
	// Step 1: Configure the mail session
	java.util.Properties props = new java.util.Properties();
	props.setProperty("mail.smtp.auth", "true");// 指定是否需要SMTP验证
	props.setProperty("mail.smtp.host", mailServerHost);// 指定SMTP服务器
	props.put("mail.transport.protocol", sendMailProtocol);//邮件发送协议 
	Session mailSession = Session.getDefaultInstance(props);
	mailSession.setDebug(true);// 是否在控制台显示debug信息

	// Step 2: Construct the message
	InternetAddress fromAddress = new InternetAddress(sendUserName);
	// 设置多个收件人地址  
	InternetAddress[] internetAddressTo = (InternetAddress[]) to.toArray(new InternetAddress[to.size()]);  
	MimeMessage testMessage = new MimeMessage(mailSession);
	testMessage.setFrom(fromAddress);
	testMessage.setRecipients(javax.mail.Message.RecipientType.TO, internetAddressTo);
	testMessage.setSentDate(new java.util.Date());
	testMessage.setSubject(MimeUtility.encodeText(subject, "gb2312", "B"));

	testMessage.setContent(messageText, "text/html;charset=gb2312");

	// Step 3: Now send the message
	Transport transport = mailSession.getTransport("smtp");
	transport.connect(mailServerHost, sendUserName, sendUserPassword);
	transport.sendMessage(testMessage, testMessage.getAllRecipients());
	transport.close();
	
}

	public static void main(String[] args) throws AddressException {
        String to = "CCC@qq.com";
        String subject = "html邮件测试"; //subject javamail自动转码
 
        StringBuffer theMessage = new StringBuffer();
        theMessage.append("<div style='margin-top:10px'>发送的内容</div>");
        
		List<InternetAddress> list = new ArrayList<InternetAddress>();
		list.add(new InternetAddress("AAAA@qq.com"));
		list.add(new InternetAddress("BBBB@qq.com"));
        try {
			sendHtmlMailMore( list, subject, theMessage.toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
}


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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值