OFBiz的邮件发送实现,

简介: 发送 email 可以用 spring 的 jar 包来发送,如果要在 ofbiz 中引用的话就等于又多了一个框架,所以不用它,只用 javax.mail.*; 和 freemarker 模板jar包。

发送 email 可以用 spring jar 包来发送,如果要在 ofbiz 中引用的话就等于又多了一个框架,所以不用它,只用 javax.mail.*; freemarker 模板jar包。如果不发html格式,那么代码将只依赖javax的mail包适合所有情况

 核心代码

Java代码 复制代码  收藏代码img_3d0b4cacdc5d213eebebbe13f1dc9910.gif
  1. Properties _props  = System.getProperties();   
  2.   
  3. _props.put("mail.smtp.host""localhost");//放置邮件服务器地址    
  4.   
  5.      Session session = Session.getDefaultInstance(_props, null);       
  6.   
  7.      MimeMessage message = new MimeMessage(session);//多用途网际邮件扩充协议的邮件信息对象   
  8.   
  9.     
  10.   
  11.      message.setFrom(new InternetAddress(sender));//发送者信息   
  12.   
  13.                InternetAddress[] ia = new InternetAddress[1];   
  14.   
  15.                ia[1] = "test@test.com";   
  16.   
  17.      message.addRecipients(Message.RecipientType.TO, ia);//接收者地址   
  18.   
  19.                InternetAddress[] ia1 = new InternetAddress[1];   
  20.   
  21.                ia1[1] = "bbc@bbc.com";   
  22.   
  23.      message.addRecipients(Message.RecipientType.BCC, ia1);//密文抄送地址   
  24.   
  25.      message.setSubject("hello");//主题   
  26.   
  27.           Multipart multipart = new MimeMultipart();//邮件内容复合主体   
  28.   
  29.           MimeBodyPart messageBodyPart = new MimeBodyPart();//邮件内容单体   
  30.   
  31.      messageBodyPart.setContent(body,"text/plain");//邮件内容,是文本的,还是text/html页面格式的   
  32.   
  33.           multipart.addBodyPart(messageBodyPart);//单体内容加入到复合主体中   
  34.   
  35.      message.setContent(multipart);//邮件加入内容信息   
  36.   
  37.      Transport.send(message);//发送邮件  
Properties _props = System.getProperties(); _props.put("mail.smtp.host", "localhost");//放置邮件服务器地址 Session session = Session.getDefaultInstance(_props, null); MimeMessage message = new MimeMessage(session);//多用途网际邮件扩充协议的邮件信息对象 message.setFrom(new InternetAddress(sender));//发送者信息 InternetAddress[] ia = new InternetAddress[1]; ia[1] = "test@test.com"; message.addRecipients(Message.RecipientType.TO, ia);//接收者地址 InternetAddress[] ia1 = new InternetAddress[1]; ia1[1] = "bbc@bbc.com"; message.addRecipients(Message.RecipientType.BCC, ia1);//密文抄送地址 message.setSubject("hello");//主题 Multipart multipart = new MimeMultipart();//邮件内容复合主体 MimeBodyPart messageBodyPart = new MimeBodyPart();//邮件内容单体 messageBodyPart.setContent(body,"text/plain");//邮件内容,是文本的,还是text/html页面格式的 multipart.addBodyPart(messageBodyPart);//单体内容加入到复合主体中 message.setContent(multipart);//邮件加入内容信息 Transport.send(message);//发送邮件 

 

 

 

其中邮件内容body为已经和 freemarker 模板结合过的字符串内容:

结合代码

 

 

Java代码 复制代码  收藏代码img_3d0b4cacdc5d213eebebbe13f1dc9910.gif
  1. Public static String getBody(Map map, String tmpName) {   
  2.   
  3. StringWriter result = new StringWriter();//输出流   
  4.   
  5.     
  6.   
  7.         String path = UtilProperties.getConfigureMessage("email.template.path");//freemarker模板地址   
  8.   
  9.         if (tmpName == null) {   
  10.   
  11.             path +="test";//默认模板   
  12.   
  13.         } else {   
  14.   
  15.             path += tmpName;   
  16.   
  17.         }   
  18.   
  19.         try {   
  20.   
  21.             Template template = FreeMarkerWorker.getTemplate(path);//取模板   
  22.   
  23.             template.process(map, result);//将所给的map中K,Value值与模板中的值相匹配,将结果放入输出流   
  24.   
  25.             //注意,map中的键值对一定要和模板中的值相匹配   
  26.   
  27.         } catch (TemplateException e1) {   
  28.   
  29.             Debug.logError(e1.getMessage().toString(), module);   
  30.   
  31.         } catch (IOException e1) {   
  32.   
  33.             Debug.logError(e1.getMessage().toString(), module);   
  34.   
  35.         }   
  36.   
  37.         String body = result.toString();   
  38.   
  39.         return body;   
  40.   
  41. }  
Public static String getBody(Map map, String tmpName) { StringWriter result = new StringWriter();//输出流 String path = UtilProperties.getConfigureMessage("email.template.path");//freemarker模板地址 if (tmpName == null) { path +="test";//默认模板 } else { path += tmpName; } try { Template template = FreeMarkerWorker.getTemplate(path);//取模板 template.process(map, result);//将所给的map中K,Value值与模板中的值相匹配,将结果放入输出流 //注意,map中的键值对一定要和模板中的值相匹配 } catch (TemplateException e1) { Debug.logError(e1.getMessage().toString(), module); } catch (IOException e1) { Debug.logError(e1.getMessage().toString(), module); } String body = result.toString(); return body; } 

 

 

目录
相关文章
|
11月前
|
小程序 PHP Perl
laravel8(六)使用自定义邮件类发送邮件
当登录邮箱为腾讯企业邮箱的时候。 Phpmailer发送邮件就不好用了,具体哪里不好用,我没真没找到。 但是,邮件得发啊,怎么办呢?
51 2
|
11月前
|
小程序 JavaScript 前端开发
laravel8(五)使用phpmailer发送邮件
博客留言系统需要用到邮件发送,有用户给我留言程序会自动给我发送邮件。很实用的一个小功能。 一:下载phpmailer类库。 我这里使用composer下载:有可能会失败,可以多试几次 bash 复制代码 composer require phpmailer/phpmailer 二:开始使用 php 复制代码 /** * @name: 发送邮件方法 * @author: camellia * @date: 2022-01-19 * @param: $email string 发送给谁 * @param: $mail_title stri
143 0
|
Java 测试技术 数据安全/隐私保护
SpringBoot整合Java Mail实现Outlook / Office365发送邮件
日常开发过程中,我们经常需要使用到邮件发送任务,比方说验证码的发送、日常信息的通知等。日常比较常用的邮件发送方包括:163、QQ等,本文主要讲解Outlook SMTP的开启方式、OutLook STARTTTL的配置、如何通过JavaMail来实现电子邮件的发送等。
8397 0
SpringBoot整合Java Mail实现Outlook / Office365发送邮件
|
网络协议 安全 网络安全
SMTP邮件服务器原理解析,php发送邮件,swoole发送邮件
简单邮件传输协议 (Simple Mail Transfer Protocol 简称 SMTP) 是一个相对简单的基于文本的协议。 在发送方(客户端)和接收方(服务器)间创建TCP连接之后 那么接下来就是一个合法的SMTP会话了。(SMTP会话的本质只是一个普通TCP,只是会话的消息按照规范组装发送) 在下面的对话中,所有客户端发送的都以C:作为前缀,所有服务器发送的都以S:作为前缀。
218 0
SMTP邮件服务器原理解析,php发送邮件,swoole发送邮件
|
消息中间件 Java API
SpringBoot Mail邮件任务
SpringBoot Mail邮件任务
SpringBoot Mail邮件任务
|
测试技术 PHP Apache
PHPMailer安装及简单实例(PHP发送邮件不用Smtp类)
PHPMailer安装及简单实例 [ 2006-11-29 14:37:49 | Author: songzi ] Font Size: Large | Medium | Small PHPMailer是一个用PHP写的用于邮件发送的类,有点像Jmail,相信很多新手和我一样,开始很茫然,不知道怎么安装,查找了一下,发现这方面的资料真的少之又少,一个文章被转载千百次,一搜索全是同一个内容,真不知道说什么好,其实打开安装里的readme就一目了然了,闲话少说,安装其实很简单。
1723 0