ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

EmailUtils和Base64编码解码

2022-06-24 11:02:44  阅读:178  来源: 互联网

标签:String import 解码 Base64 new mail message com EmailUtils


EmailUtils和Base64编码解码

记录一下学习写的邮件工具类和对明文进行base64编码解码的工具类,以便不时之需;

EmailUtils完整代码:

package com.gec.store.util;

import java.io.UnsupportedEncodingException;
import java.net.Inet4Address;
import java.net.UnknownHostException;
import java.security.GeneralSecurityException;
import java.util.Date;
import java.util.Properties;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;

import com.sun.mail.util.MailSSLSocketFactory;
import com.gec.store.bean.User;

/**
 * @author: Lemon E-mail:1027880379@qq.com
 * @version:
 * @Since: Created in 2022年6月23日 上午10:32:56
 * @Description:
 */
public class EmailUtils {
	public static void sendEmail(User user) {
		// 1.设置服务器配置信息
		String account = "1027880379@qq.com";// 发送方
		String myPass = "kdonbobbxpkibehi";// 授权码
		Properties prop = new Properties();

		prop.setProperty("mail.transport.protocol", "smtp");// 设置邮件发送协议
		prop.setProperty("mail.host", "smtp.qq.com");// 设置邮件服务器
		prop.setProperty("mail.smtp.auth", "true"); // 是否开启smtp的认证功能
		prop.setProperty("mail.smtp.ssl.enable", "true");// 开启ssl加密服务功能

		try {
			// 可选,设置socket连接工厂
			MailSSLSocketFactory sf = new MailSSLSocketFactory();
			sf.setTrustAllHosts(true);// 设置服务器可信任机器
			prop.put("mail.smtp.ssl.socketFactory", sf);

			// 2.建立会话
			Session session = Session.getDefaultInstance(prop, new Authenticator() {
				// 进行与126/163/qq 的邮件服务器的连接
				@Override
				protected PasswordAuthentication getPasswordAuthentication() {
					return new PasswordAuthentication(account, myPass);
				}
			});

			// 3.获取一个传输端口
			Transport transport = session.getTransport();

			// 4.传输端口与邮箱账户进行连接
			transport.connect(account, myPass);

			// 5.创建message对象
			MimeMessage message = createMsg(session, account, user);

			// 6.用传输端口发送邮件
			transport.sendMessage(message, message.getAllRecipients());

			// 7.关闭传输端口
			transport.close();
		} catch (MessagingException | GeneralSecurityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 创建message消息对象
	 * 
	 */
	private static MimeMessage createMsg(Session session, String account, User user) {
		MimeMessage message = new MimeMessage(session);

		try {
			// 设置发送方
			message.setFrom(new InternetAddress(account, "大新商城", "UTF-8"));
			// 设置接收方
			message.setRecipient(RecipientType.TO, new InternetAddress(user.getEmail(), user.getName(), "UTF-8"));
			// 设置邮件的主题
			message.setSubject("大新商城账号激活邮件", "UTF-8");
			// 设置本机IP和拼接url连接
			String hostAddress = Inet4Address.getLocalHost().getHostAddress();
			String url = "http://" + hostAddress + ":8080/user.do?method=active&c="
					+ Base64Utils.encode(user.getCode());// 出于安全,对code明文进行base64编码
			// 设置邮件内容
			message.setContent(user.getUsername() + ",你好!<br>欢迎注册大新商城!请点击连接进行激活:<a href='" + url + "'>点击此处</a>",
					"text/html;charset=utf-8");
			// 设置邮件发送时间,可选
			message.setSentDate(new Date());
			// 保存设置
			message.saveChanges();
		} catch (UnsupportedEncodingException | MessagingException | UnknownHostException e) {
			e.printStackTrace();
		}

		return message;
	}
}

Base64Utils完整代码:

package com.gec.store.util;

import java.util.Base64;

/**
 * @author: Lemon E-mail:1027880379@qq.com
 * @version:
 * @Since: Created in 2022年6月23日 上午11:59:18
 * @Description:
 */
public class Base64Utils {
	/**
	 * 编码
	 */
	public static String encode(String source) {
		return Base64.getEncoder().encodeToString(source.getBytes());
	}

	/**
	 * 解码
	 */
	public static String dencode(String source) {
		return new String(Base64.getDecoder().decode(source.getBytes()));
	}
}


这里补充一下网上看到的比较整洁的代码,也做一下记录,供参考学习:

/**
* @author Author:lhy
* @version created on :2019年12月18日 下午8:43:35
*/
package utils;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

import com.sun.mail.util.MailSSLSocketFactory;
 
public class EmailUtil {
	 
		private static String from = "xxxxx@qq.com"; // 发件人邮箱地址
		private static String user = "咕咕单车"; // 发件人称号
		private static String password = "你的stmp授权码"; // 发件人邮箱客户端授权码,不是邮箱密码!!!
		
		/* 发送邮件 */
		public static boolean sendMail(String to, String text, String title) {
			try { 
					MailSSLSocketFactory sf=new MailSSLSocketFactory();
					sf.setTrustAllHosts(true);
					
					//获取系统属性
				  	Properties properties = new Properties();
			        
				  	properties.put("mail.smtp.host", "smtp.qq.com");// 主机名
				  	properties.put("mail.smtp.port", "465");//使用465端口号
				  	properties.put("mail.smtp.auth", "true");//开启认证
				  	properties.put("mail.smtp.ssl.enable", "true");//允许使用ssl加密传输
				  	properties.put("mail.smtp.ssl.socketFactory", sf);
				  	properties.put("mail.debug", "true");// 显示debug信息
				  	
			        // 得到会话对象
			        Session session = Session.getInstance(properties);
			        // 获取邮件对象
			        Message message = new MimeMessage(session);
			        // 设置发件人邮箱地址
			        message.setFrom(new InternetAddress(from));
			        // 设置收件人邮箱地址,一次向多个邮箱发送
			        //message.setRecipients(Message.RecipientType.TO, new InternetAddress[]{new InternetAddress("xxx@qq.com"),new InternetAddress("xxx@qq.com"),new InternetAddress("xxx@qq.com")});
			        // 设置收件人邮箱地址,一次向一个邮箱发送
			        message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));//一个收件人
			        // 设置邮件标题
			        message.setSubject(title);
			        // 设置邮件内容
			        message.setText(text);
			        // 得到邮差对象
			        Transport transport = session.getTransport();
			        // 连接自己的邮箱账户
			        transport.connect(from, password);// 密码为QQ邮箱开通的stmp服务后得到的客户端授权码
			        // 发送邮件
			        transport.sendMessage(message, message.getAllRecipients());
			        // 关闭资源
			        transport.close();
			        return true;
			}catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
				return false;
			}
		}
	 
		public static void main(String[] args) { // 做测试用
			sendMail("xxxxxx@qq.com", "机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组", "什么是机器学习?");
		}
}

标签:String,import,解码,Base64,new,mail,message,com,EmailUtils
来源: https://www.cnblogs.com/lemonaaa/p/16407983.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有