- 查看Outlook的“SMTP”配置
![]()
![]()
获取SMTP的设置
服务器名称: smtp.partner.outlook.cn
端口: 587- 代码
实现类
@Override @Transactional(rollbackFor = Exception.class) public BaseVo<Object> saleEmail(SaleSendEmailVO vo) throws Exception { SaleSendEmailTemplate selectOne = templateService.getOne(new LambdaQueryWrapper<SaleSendEmailTemplate>().eq(SaleSendEmailTemplate::getIsDeleted, Const.IS_DEL) .eq(SaleSendEmailTemplate::getProductName, vo.getProductName()) .eq(SaleSendEmailTemplate::getSaleStep, vo.getSaleStep())); if (selectOne == null) { return BaseVo.error("邮件模板选择为空"); } String userName = commonService.getCurrentLoginUserName(); SysUser sysUser = userMapper.selectOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getDelFlag, Const.IS_DEL).eq(SysUser::getUsername, userName)); if (sysUser == null || StringUtils.isEmpty(sysUser.getEmail()) || StringUtils.isEmpty(sysUser.getEmailPwd())) { throw new RuntimeException("销售人员信息或者邮件地址为空,请核实!"); } MailSenderInfo mailSenderInfo = new MailSenderInfo(); // 设置邮件内容 StringBuilder mailContent = new StringBuilder(); mailContent.append(vo.getEmailContent().toString()).append("<br/>"); // 设置附件 if (CollectionUtils.isNotEmpty(vo.getFileList())) { for (SaleSendAttachVO attachVO : vo.getFileList()) { mailContent.append("附件链接为:").append("<a href=").append(attachVO.getFilePath()).append(">").append(attachVO.getFileName()).append("</a>").append("<br/>"); } } mailContent.append("<br/>").append("<br/>") .append("<img src=").append("图片地址").append(" style=\"width: 20%\" >").append("<br/>") .append("M:").append(sysUser.getEmail()).append("<br/>") .append("T:").append(sysUser.getPhone()).append("<br/>") .append("A:").append("上海市XXXXX").append("<br/>") .append("<img src=").append("图片地址").append(" style=\"width: 20%\" >"); String content = mailContent.toString(); mailSenderInfo.setContent(content); vo.setEmailContent(content); mailSenderInfo.setMailServerHost(Const.MAIL_SERVER_HOST); // 开始验证 mailSenderInfo.setValidate(true); // 设置发送邮箱mailSenderInfo.setFromAddress(sysUser.getEmail());//发件人 mailSenderInfo.setSubject(vo.getEmailSubject());//邮件主题/标题 mailSenderInfo.setToAddress(vo.getAccepter());//收件人 mailSenderInfo.setCcAddress(vo.getCopyAccepter());//抄送人mailSenderInfo.setUserName(sysUser.getEmail());//发件人名称,是邮件名称 mailSenderInfo.setPassword(sysUser.getEmailPwd());//Outlook的密码 // 发送邮件的工具类 MailSender.sendHtmlMail(mailSenderInfo); SaleSendEmail entity = new SaleSendEmail(); BeanUtils.copyProperties(vo, entity); entity.setSalerEmail(sysUser.getEmail()); entity.setSaler(sysUser.getUsername()); entity.setSalerId(sysUser.getId().toString()); entity.setEmailTemplateId(selectOne.getId().toString()); entity.setCreateBy(userName); entity.setCreateDt(new Date()); this.save(entity); return BaseVo.ok(); }
类:MailSenderpublic static boolean sendHtmlMail(MailSenderInfo mailInfo) throws Exception { // 判断是否需要身份认证 MyAuthenticator authenticator = null; Properties pro = mailInfo.getProperties(); pro.put("mail.smtp.host", Const.MAIL_SERVER_HOST); pro.put("mail.smtp.port", "587"); pro.put("mail.smtp.auth", "true"); pro.put("mail.smtp.starttls.enable", "true"); // 如果需要身份认证,则创建一个密码验证器 if (mailInfo.isValidate()) { authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()); } // 根据邮件会话属性和密码验证器构造一个发送邮件的session Session sendMailSession = Session.getDefaultInstance(pro, authenticator); // 根据session创建一个邮件消息 Message mailMessage = new MimeMessage(sendMailSession); // 创建邮件发送者地址 Address from = new InternetAddress(mailInfo.getFromAddress()); // 设置邮件消息的发送者 mailMessage.setFrom(from); String toAddress = mailInfo.getToAddress(); String bccAddress = mailInfo.getBccAddress(); String ccAddress = mailInfo.getCcAddress(); String[] arr = null; int receiverCount; if (null != toAddress && !"".equals(toAddress.trim())) { arr = toAddress.split(";");// 解析主送邮箱地址字符串,多个邮箱地址用","分隔 receiverCount = arr.length; InternetAddress[] address = new InternetAddress[receiverCount]; for (int i = 0; i < receiverCount; i++) { address[i] = new InternetAddress(arr[i]); } mailMessage.addRecipients(Message.RecipientType.TO, address); } if (null != bccAddress && !"".equals(bccAddress.trim())) { arr = bccAddress.split(";");// 解析暗送邮箱地址字符串,多个邮箱地址用","分隔 receiverCount = arr.length; InternetAddress[] address = new InternetAddress[receiverCount]; for (int i = 0; i < receiverCount; i++) { address[i] = new InternetAddress(arr[i]); } mailMessage.addRecipients(Message.RecipientType.BCC, address); } if (null != ccAddress && !"".equals(ccAddress.trim())) { arr = ccAddress.split(";");// 解析抄送邮箱地址字符串,多个邮箱地址用","分隔 receiverCount = arr.length; InternetAddress[] address = new InternetAddress[receiverCount]; for (int i = 0; i < receiverCount; i++) { address[i] = new InternetAddress(arr[i]); } mailMessage.addRecipients(Message.RecipientType.CC, address); } // 设置邮件消息的主题 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); if (null != mailInfo.getAttachFileNames()) { for (int i = 0; i < mailInfo.getAttachFileNames().length; i++) { if (StringUtils.isNotBlank(mailInfo.getAttachFileNames()[i])) { // 建立第二部分:附件 html = new MimeBodyPart(); // 获得附件 DataSource source = new FileDataSource(mailInfo.getAttachFileNames()[i]); //设置附件的数据处理器 html.setDataHandler(new DataHandler(source)); // 设置附件文件名 int index = mailInfo.getAttachFileNames()[i].lastIndexOf("/"); String fileName = mailInfo.getAttachFileNames()[i].substring(index + 1); html.setFileName(MimeUtility.encodeText(fileName)); // 加入第二部分 mainPart.addBodyPart(html); } } } // 发送邮件 Transport.send(mailMessage); return true; }
- 代码


浙公网安备 33010602011771号