最近再给公司写一个发送邮件的系统,收到同事反馈说收到的默认样式太丑了,于是我钻研了一下,设计了一下自己的邮箱前端样式,于是特此写下这篇文章

一.搭建环境

相信大家也在其余的博客中学习到了怎么使用qq邮箱来发送邮件,但是很有可能大家写的并不是很规范,没有考虑到复用性等等,那么我在这里提供一下自己的一个写法。

构建实体类

package com.znb.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private int id;private String name;private String email;private String address;
}

书写配置环境

TestSent:Icee:857787854@qq.comCy:1240152953@qq.comemailinformation:#发件人的 邮箱 和 密码(替换为自己的邮箱和密码)serviceSendEmailAccount: xxxxxserviceSendEmailPassword: xxxxxxx# 发件人邮箱的 SMTP 服务器地址, 必须准确, 不同邮件服务器地址不同, 一般格式为: smtp.xxx.com  网易163邮箱的 SMTP 服务器地址为: smtp.163.com#    myEmailSMTPHost: smtp.qiye.163.commyEmailSMTPHost: smtp.qiye.aliyun.com#唯一标识  用来判断程序走哪个环境  dev test prodevTestProSystem: pro#项目发布地址,邮件跳转使用ipAddress: www.baidu.com

创建一个类来接收配置文件中的数据

这里要注意一下,此处和上述配置文件的数据一一对应,这样的好处是当我们需要改变什么的时候,直接在配置文件修改就可以了。

package com.znb.common;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@ConfigurationProperties(prefix = "emailinformation")
public class EmailInformationProperties {//private String MyEmailSMTPHost;//private String serviceSendEmailAccount;//private String serviceSendEmailPassword;//private String devTestProSystem;private String IpAddress;
}

创建工具类

这里有三个关键的函数,一个是发送邮件,一个是创建邮件,一个是生成发送邮件的前端样式,样式我就随便写了一下,不要嫌弃

package com.znb.utils;import com.znb.common.EmailInformationProperties;
import com.znb.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;import javax.mail.*;
import javax.mail.internet.*;
import java.util.Date;
import java.util.Properties;public class EmailUtils {public static void SendEmilToUser(EmailInformationProperties emailInformationProperties,String addr,String title,String count) throws Exception {// 1. 创建参数配置, 用于连接邮件服务器的参数配置Properties props = new Properties();                    // 参数配置props.setProperty("mail.transport.protocol", "smtp");   // 使用的协议(JavaMail规范要求)props.setProperty("mail.host", emailInformationProperties.getMyEmailSMTPHost());        // 发件人的邮箱的 SMTP 服务器地址props.setProperty("mail.smtp.auth", "true");            // 请求认证,参数名称与具体实现有关// 2. 根据配置创建会话对象, 用于和邮件服务器交互javax.mail.Session session = javax.mail.Session.getDefaultInstance(props);session.setDebug(false);                                 // 设置为debug模式, 可以查看详细的发送 logcreateEmail(emailInformationProperties,session, addr,title,count);}private static void createEmail(EmailInformationProperties emailInformationProperties,javax.mail.Session session,String addr,String title,String count) throws Exception {MimeMessage message = createMimeMessage(session, emailInformationProperties.getServiceSendEmailAccount(), addr,title,count);// 4. 根据 Session 获取邮件传输对象Transport transport = session.getTransport();// 5. 使用 邮箱账号 和 密码 连接邮件服务器//    这里认证的邮箱必须与 message 中的发件人邮箱一致,否则报错transport.connect(emailInformationProperties.getServiceSendEmailAccount(), emailInformationProperties.getServiceSendEmailPassword());// 6. 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人transport.sendMessage(message, message.getAllRecipients());// 7. 关闭连接transport.close();}public static MimeMessage createMimeMessage(javax.mail.Session session, String sendMail, String addr, String title, String count) throws Exception {// 1. 创建一封邮件MimeMessage message = new MimeMessage(session);// 2. From: 发件人message.setFrom(new InternetAddress(sendMail, "华为商店", "UTF-8"));// 3. To: 收件人(可以增加多个收件人、抄送、密送)message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(addr, "", "UTF-8"));// 4. Subject: 邮件主题message.setSubject(title, "UTF-8");// 5. Content: 邮件正文(可以使用html标签)message.setContent(count, "text/html;charset=UTF-8");// 6. 设置发件时间message.setSentDate(new Date());// 7. 保存设置message.saveChanges();return message;}public static String buildCopyCount(User userDO, String ipAddress) {String count="尊敬的"+userDO.getName()+":";count +="<br/>";count +="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;您好。";count +="<br/>";count +="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;恭喜您抽中华为Mate40pro一部<a href='"+ipAddress+"'>点击前往查看</a>";count +="<br/>";count +="<table border=\"1\" cellspacing=\"0\" width=\"100%\" style=\"text-align: center\">" +"<tr height=\"30px\" bgcolor=\"#00B83F\">" +"<td colspan=\"5\" style=\"color: white\">信息</td>" +"</tr>" +"<tr bgcolor=\"#1186bb\" style=\"color: white\">" +"<td>您的住址:</td>" +"</tr>" +"<tr>" +"<td>"+userDO.getAddress()+"</td>" +"</tr>" +"</table>";return count;}}

发送请求

在这里就不在数据库中添加用户信息了,就随便模拟了一个,值得一提的是,当配置环境是test的时候,我们可以不调用发邮箱的函数,或者把要发送的邮箱换成测试邮箱,这样就不会给客户造成困扰了

package com.znb.controller;import com.znb.common.EmailInformationProperties;
import com.znb.pojo.User;
import com.znb.utils.EmailUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;@RestController
public class EmailController {@Autowiredprivate EmailInformationProperties emailInformationProperties;public static List<User> getUser(){User user1=new User(1,"萧炎","857787854@qq.com","斗气大陆");User user2=new User(2,"唐三","243916422@qq.com","斗罗大陆");User user3=new User(3,"图图","123456789@qq.com","翻斗街道");List<User>userList=new ArrayList<>();
//        userList.add(user2);userList.add(user1);
//        userList.add(user3);return userList;}@RequestMapping("/senduser")public String Send(){List<User>list=EmailController.getUser();list.forEach((user)->{String count = EmailUtils.buildCopyCount(user, emailInformationProperties.getIpAddress());try {if (!emailInformationProperties.getDevTestProSystem().equals("test")){EmailUtils.SendEmilToUser(emailInformationProperties,user.getEmail(),"您中奖啦",count);}else {System.out.println("成功");}} catch (Exception e) {e.printStackTrace();}});return "发送成功";}
}


这个…样式是有点丑,我随便写的,大家可以自己写的好看一点

如何使用Java来发送企业邮箱,并设计收到邮件的样式相关推荐

  1. java 发送企业邮箱_java发送企业邮箱

    此代码用的jar文件:mail.jar(我这里用的是1.4.7 的版本); 如果jdk用的是1.8版本会出现SSL错误:这个问题是jdk导致的,jdk1.8里面有一个jce的包,安全性机制导致的访问h ...

  2. Java腾讯企业邮箱发送邮件

    ##Java通过腾讯企业邮箱发送邮件(多人发送) 企业邮箱需要使用ssl private static String account = "企业邮箱账户";// 登录账户priva ...

  3. 阿里云企业邮箱代理商:foxmal邮件发送RCPT错误怎么办?

    阿里云企业邮箱代理商:foxmal邮件发送RCPT错误怎么办? 聚搜云是上海聚搜信息技术有限公司旗下品牌,坐落于魔都上海,服务于全球.2019年成为阿里云代理商生态合作伙伴.与阿里云代理商.腾讯云.西 ...

  4. 腾讯企业邮箱小程序撤回邮件_6个针对小型企业的有用的电子邮件营销技巧

    腾讯企业邮箱小程序撤回邮件 Email remains one of the most lucrative marketing channels for businesses. Unlike PPC, ...

  5. 求一个外贸企业邮箱账号,企业邮箱怎么操作撤回邮件?

    求一个企业邮箱账号.企业邮箱怎么操作撤回邮件?企业邮箱是按照企业自有域名任意开设不同名字,比如说我们用的TOM企业邮箱,就可以用公司域名统一后缀,对外有利于企业形象的建设:并根据不同的需求设定空间大小 ...

  6. 什么是联系人邮箱,如何使用企业邮箱给外国人发邮件?

    企业邮箱可以很好的管理联系人邮箱,并且有专属的海外通道向国外发送邮件:TOM 企业邮箱,智能管理功能和定制邮箱名字,对外可以树立公司的品牌形象,对内可以管理企业内部沟通.那么今天就一起来看看什么是联系 ...

  7. java 发送企业邮箱_java 企业邮箱_java 企业邮箱群发邮件

    java 企业邮箱群发邮件的步骤主要分为以下几步: 第一步: 申请腾讯企业邮箱账号 第二步: 登录 设置成员账号 成员账号进行登录发邮件 回到原来的登录界面使用刚刚设置的成员账号进行登录 java中也 ...

  8. Java + 腾讯企业邮箱 + javamail + SSL 发送邮件(转载:http://www.cnblogs.com/LUA123/p/5575134.html)

    说实话腾讯的企业邮箱真心不错! 腾讯企业邮箱官网:http://exmail.qq.com/login/ 新用户注册:http://exmail.qq.com/onlinesell/intro 点击开 ...

  9. Java + 腾讯企业邮箱 + javamail发送邮件

    搞了一上午终于搞定了腾讯云企业邮箱的发送,话说腾讯云的东西就是繁琐,但是好用,还是得认真看文档啊,不然真的摸不着北. 腾讯企业邮箱官网:http://exmail.qq.com 点击开通 你跟着步骤走 ...

最新文章

  1. 【shell 脚本】删除 由windows传入linux含有的 ^M
  2. 微服务中的网关到底是个什么鬼?
  3. 项目上线与LOG记录
  4. 怎么自学python自动化测试-Python实现性能自动化测试竟然如此简单
  5. python开发的模型部署_使用Python部署机器学习模型的10个实践经验
  6. 中国大学慕课python答案第七章_中国大学慕课mooc用Python玩转数据章节答案
  7. SQLServer2008内存飙升 解决
  8. 2021李宏毅机器学习课程笔记——Recurrent Neural Network
  9. git 分支管理策略(7)
  10. 产品运营:当你和上级发生争执你会怎么处理?
  11. git小乌龟新建分支、合并分支
  12. 计算机安装重装出现错误,一键重装失败怎么办?电脑重装系统失败的原因和解决方法...
  13. workman 是什么
  14. RabbitMQ中的cluster、mirrored queue,以及 warrens机制、RAM node、disk node及vhost介绍
  15. 工欲善其事,必先利其器之-mac下使用zsh
  16. drozer安装与使用
  17. Windows模拟器推荐
  18. SpringCloud系列(2)---Netfilx-Eureka
  19. android软件工程师请进(说说自己公司的软件人员配置)
  20. 2020年第十二届全国大学生数学竞赛初赛(非数学)大题2-3题解析

热门文章

  1. Java项目:基于java的医院挂号预约系统(计算机毕业设计)
  2. 陪诊服务系统源码,可以在线预约陪诊师的软件平台
  3. seo网络优化是什么?
  4. 腾讯云音视频互动课堂trtc,实现逻辑,服务端混流逻辑
  5. 在Visio中实现任意两点之间的连线
  6. 与《代码大全》齐名的经典著作 1
  7. pythoneducoder苹果梨子煮水的功效_喝梨苹果熬的茶有什么功效与作用
  8. http://www.v2ex.com/ 技术论坛
  9. 2022-5-15 密码学刷题分享(第二部分)
  10. spring factory-method和factory-bean 使用