jbpm4.4中使用mail组件发邮件时如果邮件服务器要求smtp 验证用户 经过反复测试没能成功,通过观察javamail发送到需要smtp验证的服务器的代码,对比jbpm中的实现类,发现jbpm好像那个类没有实现权限验证的连接。
下面代码是经过修改后的,实现了smtp验证服务器发邮件。测试成功!
package org.jbpm.pvm.internal.email.impl;
import java.util.Collection;
import java.util.List;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import org.jbpm.api.JbpmException;
import org.jbpm.pvm.internal.email.spi.MailSession;
public class MailSessionImpl implements MailSession {
private List<MailServer> mailServers;
public void send(Collection<Message> emails) {
// Emails need to have the sessions populated.
for (Message email : emails) {
try {
Address[] to = email.getRecipients(RecipientType.TO);
Address[] cc = email.getRecipients(RecipientType.CC);
Address[] bcc = email.getRecipients(RecipientType.BCC);
for (MailServer mailServer : mailServers) {
// Need to apply filter.
AddressFilter addressFilter = mailServer.getAddressFilter();
if (addressFilter != null) {
// Set the email with the new filtered addresses.
email.setRecipients(RecipientType.TO, addressFilter.filter(to));
email.setRecipients(RecipientType.CC, addressFilter.filter(cc));
email.setRecipients(RecipientType.BCC, addressFilter.filter(bcc));
}
// if sender is not present, use local address
Session mailSession = mailServer.getMailSession();
if (email.getFrom() == null) {
email.setFrom(InternetAddress.getLocalAddress(mailSession));
}
// If there is someone to send it to, then send it.
Address[] recipients = email.getAllRecipients();
if (recipients.length > 0) {
Transport transport = mailSession.getTransport(recipients[0]);
try {
// transport.connect(); //原来smtp的连接服务器代码
transport.connect("smtp.sina.com", "邮箱账号", "密码");
transport.sendMessage(email, recipients);
System.out.println("MailSessionImpl.send() ok!");
} finally {
transport.close();
}
}
}
} catch (MessagingException e) {
throw new JbpmException("could not send email: " + email, e);
}
}
}
public List<MailServer> getMailServers() {
return mailServers;
}
protected void setMailServers(List<MailServer> mailServers) {
this.mailServers = mailServers;
}
}
注意 transport.connect("smtp.sina.com", "邮箱账号", "密码");中使用的账号和jbpm.mail.properties
mail.smtp.host=smtp.sina.com.cn
mail.from=xxxxxx@sina.com
mail.smtp.auth=true
分享到:
相关推荐
在这个"jbpm4.4 邮件发送demo"中,我们可以推测作者通过编写一个简单的应用程序,展示了如何在jbpm4.4环境中集成邮件发送功能。这通常是为了实现自动化的任务通知,例如当工作流程中的某个事件发生时,系统可以自动...
jbpm4jbpm5是关于jbpm流程管理框架的专题,涵盖了jbpm4和jbpm5两个主要版本。jbpm是一个开源的工作流管理系统,用于帮助开发者实现业务流程自动化。以下是基于给定文件的信息,深入解析jbpm4和jbpm5的知识点: 1. *...
在配置完成后,jbpm就可以通过`mailService`发送邮件了。邮件的发送可以通过编写Java代码或者使用工作流定义(BPMN2模型)中的事件触发。例如,在BPMN2模型中,可以添加一个信号事件,并配置一个信号监听器来发送...
jBPM4作为该系列的一个版本,提供了一套完整的流程管理和执行框架,允许开发者构建灵活的工作流应用,以实现业务流程自动化。本指南由胡奇编写,旨在为开发者提供一个全面的参考,帮助他们快速学习和掌握使用jBPM4...
这个"jbpm4案例源码"包含了jbpm4系统的核心组件和示例代码,帮助开发者深入理解jbpm4的工作原理和实践应用。《jBPM4工作流应用开发指南.pdf》这本书则进一步阐述了如何利用jbpm4来构建工作流应用。 jbpm4的核心功能...
7. **org.jbpm.pvm.internal.email**: 支持电子邮件功能,包括SPI接口和实现类,如`AddressResolver`、`MailProducer`和`MailSession`,用于自定义邮件发送。 8. **org.jbpm.pvm.internal.env**: 包含IoC...
7. **活动(Action)**:预设的程序行为,如自动发送邮件,是流程中的自动操作。 **数据库表结构** - **JBPM4_DEPLOYMENT**:存储流程部署信息。 - **JBPM4_DEPLOYPROP**:记录流程部署的属性。 - **JBPM4_...
### JBPM4 表结构详解 JBPM (JBoss Business Process Management) 是一款开源的工作流管理系统,被广泛应用于业务流程管理领域。JBPM4作为其一个版本,具有丰富的功能及特性,尤其在流程管理和任务分配方面表现突出...
原代的jbpm4.4 没有用户身份验证 而公司邮箱新浪邮箱等等 都必须要省份验证功能!
**jBPM4完整例子详解** jBPM4是一个企业级的工作流管理系统,它提供了强大的业务流程管理和工作流实现能力。这个"jBPM4完整例子"是一个基于SSH(Struts2、Spring、Hibernate)框架集成jBPM4.4的请假流程应用,非常...
如果你在学习过程中遇到问题,或者没有足够的积分下载jbpm4web,可以通过描述中提供的链接访问博主的博客,寻找联系信息,通过QQ或邮件索取源代码。这种方式体现了开源社区互助共享的精神。 总结来说,jbpm4web是...
**jbPM4工作流示例jbpmDemo**是一款基于jBPM4的工作流管理系统实例,旨在帮助用户深入了解和掌握jBPM4工作流引擎的使用方法。jBPM4是一款强大的开源工作流管理系统,它提供了流程建模、执行以及监控等功能,广泛应用...
**jBPM 4 使用手记** jBPM(Java Business Process Management)是一个开源的工作流管理系统,它提供了全面的业务流程管理和工作流解决方案。在jBPM 4这个版本中,开发者可以利用其强大的功能来设计、执行和管理...
**jBPM4入门基础环境配置** jBPM(Java Business Process Management)是一个开源的工作流管理系统,主要用于处理业务流程的建模、部署、执行和监控。jBPM4是其第四个主要版本,它提供了丰富的功能,包括流程定义、...
jbpm4。4中表之间的关系,jbpm4 表关系
jbpm4是一个基于Java的企业级工作流管理系统,用于设计、执行和管理业务流程。这个“jbpm4 完整的请假流程”是一个示例项目,旨在帮助初学者理解和实践jbpm4在处理业务流程,尤其是请假申请流程中的应用。在这个项目...
JBPM4是一个强大的工作流管理系统,专为Java开发者设计,具备高度的可扩展性。它完全用Java语言编写,确保了跨平台的兼容性和良好的编程体验。JBPM4的核心特性之一是采用了Hibernate作为其持久层框架,使得数据管理...
5. **监听器和事件处理**:jbpm4支持监听器机制,可以监听流程中的特定事件,如任务创建、完成等,然后执行相应的回调逻辑,比如发送通知邮件。 6. **工作流引擎的使用**:jbpm4提供API来启动流程实例、分配任务、...
【jbpm4的员工请假例子原码】是一个基于jbpm4流程引擎的示例项目,展示了如何在企业中实现一个简单的员工请假流程。这个Web项目是完全开源的,可以通过Eclipse这样的集成开发环境来打开和运行,对于学习和理解jbpm4...