`
Tyler_Zhou
  • 浏览: 217011 次
  • 性别: Icon_minigender_1
  • 来自: 湖北->上海
社区版块
存档分类
最新评论

liferay邮件发送类

阅读更多
liferay的邮件发送写的异常复杂,用了配置文件,我只要一个简单的发送功能,用他的实在是杀鸡用牛刀,自已写了一个发送的类,代码如下:
package com.ext.portlet.mail;

import java.util.Properties;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class SendMail {

private static Log log = LogFactory.getLog(SendMail.class);

private MimeMessage mimeMsg; // MIME邮件对象

private Session session; // 邮件会话对象

private Properties props; // 系统属性

private boolean needAuth = false; // smtp是否需要认证

private String username = ""; // smtp认证用户名和密码

private String password = "";

private Multipart mp; // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象

/**
*
*/
public SendMail() {
setSmtpHost("");// 如果没有指定邮件服务器,就从getConfig类中获取
createMimeMessage();
}

public SendMail(String smtp) {
setSmtpHost(smtp);
createMimeMessage();
}

/**
* @param hostName
*            String
*/
public void setSmtpHost(String hostName) {
log.info("Setting system properties...mail.smtp.host = " + hostName);
if (props == null)
props = System.getProperties(); // 获得系统属性对象

props.put("mail.smtp.host", hostName); // 设置SMTP主机
}

/**
* @return boolean
*/
public boolean createMimeMessage() {
try {
log.info("Ready to get the mail session object...");
session = Session.getDefaultInstance(props, null); // 获得邮件会话对象
} catch (Exception e) {
log.error("Get a error when init the session object..." + e);
return false;
}

log.info("Ready to create MIME mail object...");
try {
mimeMsg = new MimeMessage(session); // 创建MIME邮件对象
mp = new MimeMultipart();

return true;
} catch (Exception e) {
log.error("Fail to create MIME mail object..." + e);
return false;
}
}

/**
* @param need
*            boolean
*/
public void setNeedAuth(boolean need) {
log.info("Setting SMTP auth...mail.smtp.auth = " + need);
if (props == null)
props = System.getProperties();

if (need) {
props.put("mail.smtp.auth", "true");
} else {
props.put("mail.smtp.auth", "false");
}
}

/**
* @param name
*            String
* @param pass
*            String
*/
public void setNamePass(String name, String pass) {
username = name;
password = pass;
}

/**
* @param mailSubject
*            String
* @return boolean
*/
public boolean setSubject(String mailSubject) {
log.info("Setting mail subject...");
try {
mimeMsg.setSubject(mailSubject);
return true;
} catch (Exception e) {
log.error("Fail to setting the mail subject...");
return false;
}
}

/**
* @param mailBody
*            String
*/
public boolean setBody(String mailBody) {
try {
BodyPart bp = new MimeBodyPart();
bp.setContent(
"<meta http-equiv=Content-Type content=text/html; charset=gb2312>"
+ mailBody, "text/html;charset=GB2312");
mp.addBodyPart(bp);

return true;
} catch (Exception e) {
log.error("Fail to setting the mail content" + e);
return false;
}
}

/**
* @param name
*            String
* @param pass
*            String
*/
public boolean addFileAffix(String filename) {

System.out.println("Add annex..." + filename);

try {
BodyPart bp = new MimeBodyPart();
FileDataSource fileds = new FileDataSource(filename);
bp.setDataHandler(new DataHandler(fileds));
bp.setFileName(fileds.getName());

mp.addBodyPart(bp);

return true;
} catch (Exception e) {
log.error("Add annex:" + filename + "error" + e);
return false;
}
}

/**
* @param name
*            String
* @param pass
*            String
*/
public boolean setFrom(String from) {
log.info("Setting From...");
try {
mimeMsg.setFrom(new InternetAddress(from)); // 设置发信人
return true;
} catch (Exception e) {
return false;
}
}

/**
* @param name
*            String
* @param pass
*            String
*/
public boolean setTo(String to) {
if (to == null)
return false;

try {
mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress
.parse(to));
return true;
} catch (Exception e) {
return false;
}

}

/**
* @param name
*            String
* @param pass
*            String
*/
public boolean setCopyTo(String copyto) {
if (copyto == null)
return false;
try {
mimeMsg.setRecipients(Message.RecipientType.CC,
(Address[]) InternetAddress.parse(copyto));
return true;
} catch (Exception e) {
return false;
}
}

/**
* @param name
*            String
* @param pass
*            String
*/
public boolean sendout() {
try {
mimeMsg.setContent(mp);
mimeMsg.saveChanges();
log.info("Sending....");

Session mailSession = Session.getInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect((String) props.get("mail.smtp.host"), username,
password);
transport.sendMessage(mimeMsg, mimeMsg
.getRecipients(javax.mail.Message.RecipientType.TO));
// transport.send(mimeMsg);

log.info("Send mail success");
transport.close();

return true;
} catch (Exception e) {
log.error("Send mail fail" + e);
e.printStackTrace();
return false;
}
}
}
分享到:
评论

相关推荐

    Liferay管理员手册

    - **创建一个邮件会话绑定到mail/MailSession**: 设置邮件发送服务。 - **配置JAAS**: 介绍如何配置Java Authentication and Authorization Service (JAAS)。 - **创建$TOMCAT_HOME/conf/jaas.config**: 创建JAAS...

    liferay使用心得

    使用`LanguageUtil`类,我们可以在JSP或Java代码中根据用户locale动态获取这些国际化信息。 接着,我们讨论portlet属性的国际化。在创建portlet时,可以通过设置“Create resource bundle file”选项自动生成资源...

    liferay message

    这个文件夹可能包含了Liferay邮件服务相关的JMS(Java消息服务)文件。JMS是Java平台上的标准API,用于发送和接收消息,Liferay Message Bus可能使用JMS作为底层实现,以便在不同的服务和组件之间进行消息传递。 2. ...

    liferay里的日志管理

    Liferay中常见的Appenders包括`ConsoleAppender`(输出到控制台)、`FileAppender`(写入文件)和`SMTPAppender`(通过电子邮件发送)。例如,`&lt;appender-ref ref="FILE" /&gt;`会将日志信息写入指定的文件。 3. **...

    liferay JSON Web服务接口调用示例.docx

    - **发送HTTP GET请求**:使用`HttpURLConnection`类创建到指定URL的连接。设置认证头后,连接并读取响应。在示例中,定义了一个名为`httpGet`的方法,它接受一个路径URL作为参数,处理HTTP GET请求并返回响应体。 ...

    liferay portlet 站内消息组件

    8. **编译与部署**:由于是用JSP开发的,开发者需要将源代码编译成Java类,然后打包成WAR(Web Application Archive)文件,通过Liferay的控制台或部署工具部署到服务器上。 综上所述,"Liferay Portlet 站内消息...

    Liferay_学习笔记

    如果已经配置了邮件服务器,系统会向新用户发送一封包含欢迎信息和初始密码的邮件。默认情况下,新用户将被分配到Power Users和Users角色,登录后显示的界面会根据系统语言设置自动本地化。 3. 增加页面: 想要...

    liferay我自己的笔记

    - **邮件服务配置**:配置SMTP服务器信息,以便发送激活邮件等。 - **安全性配置**:如启用SSL加密、设置登录失败次数限制等。 - **性能优化**:可以通过调整缓存策略、开启压缩等方式提高系统性能。 ### 开发与...

    liferay单点登录等

    4. **邮件集成**:集成邮件系统,实现邮件的自动发送和接收。 5. **短信平台集成**:集成短信服务,实现短信通知等功能。 6. **业务系统定制集成**:根据具体业务需求,定制化地集成各种业务系统。 系统集成的方式...

    Liferay 6.0.5 portal.properties 配置文件详解

    - `mail.host`: SMTP服务器地址,用于发送邮件通知。 - `mail.port`: SMTP服务器端口号。 - `mail.from.address`: 发送邮件的默认发件人地址。 - `mail.smtp.auth`: 是否需要SMTP认证。 5. **主题与布局** - `...

    liferay用户手册

    邮件主机名设置则用于配置SMTP服务器,以便发送系统通知和验证邮件。 5. **自动部署**:自动部署功能允许开发者快速测试和部署新的portlet或服务,大大提高了开发效率。 接下来是社区模块,Liferay的社区功能允许...

    LiferayPortal二次开发指南破解版.pdf

    ### Liferay Portal 二次开发指南知识点详析 #### 一、Liferay Portal 架构解析 **1.1 Portal 规范** ##### 1.1.1 JSR 168 JSR 168 是 Java Portlet 技术的标准之一,由 Java Community Process (JCP) 发布。它...

    lp5-course-site-email-portlet:适用于课程或网站的Luminis 5 Liferay 6.2电子邮件Portlet

    Luminis 5 / Liferay 6.2课程/站点电子邮件Portlet 该portlet使站点/课程的用户能够从站点/课程发送电子邮件。 可以将其添加到站点/课程页面,以便用户可以向站点/课程中的其他人发送电子邮件。 用户可以搜索要添加...

    liferay挑战:Liferay实习挑战!

    (或者:浏览至通过电子邮件发送的文件)。 git clone https://github.com/nananananate/liferay-challengecd liferay-challenge要运行CLI应用程序( .jar文件),请使用以下命令: 视窗: java -jar .\out\...

    liferay-events:创建活动并通过电子邮件邀请其他人参加。 受邀者可以查看即将举行的公共活动并进行注册

    在IT行业中,Liferay是一款广泛使用的开源企业级内容管理和数字体验平台。...它涵盖了从后端数据库存储、服务接口设计、邮件发送、前端展示到用户交互的全过程,是学习和实践企业级应用开发的一个优秀实例。

    scheduler-example:Liferay 7.x Scheduler示例

    - `JobClass.java`: 实现`MessageListener`的类,它会在预定的时间执行任务逻辑,如发送邮件、更新数据等。 - `SchedulerEntry`: 在`liferay-plugin-package.xml`中声明的计划任务,指明了作业类、触发器信息和...

    web-form-fu-portlet:基于 Liferay Web Form portlet

    基于Liferay Web Form portlet:添加文件上传功能和其他杂项。 这是一个新的 Web 表单 portlet,您可以将它与需要文件上传控件的表单一起使用。 文件将上传到磁盘(您可以指定绝对路径位置)或 Documents and ...

    ajax-jquery-portlet:Ajax Jquery Portlet

    Ajax Jquery Portlet 这个 portlet 是为了帮助那些希望看到 Ajax 在 Liferay Portlet 中使用 ... 对于您发现的任何错误/增强功能,请发送邮件至上详细说明。 部署和使用步骤: 这个 portlet 的部署就像 Liferay 的其

    Portlet 入门实例

    - **Liferay Hooks**和**Liferay Plugins SDK**:对于使用Liferay Portal的开发者,理解如何利用这些工具进行portlet开发和定制是十分重要的。 - **Portlet渲染参数**:允许portlet之间传递信息,实现协同工作。 - *...

Global site tag (gtag.js) - Google Analytics