`

jbpm4 发送smtp验证的邮件

    博客分类:
  • JBPM
阅读更多
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
0
0
分享到:
评论

相关推荐

    jbpm4.4 邮件发送demo

    在这个"jbpm4.4 邮件发送demo"中,我们可以推测作者通过编写一个简单的应用程序,展示了如何在jbpm4.4环境中集成邮件发送功能。这通常是为了实现自动化的任务通知,例如当工作流程中的某个事件发生时,系统可以自动...

    jbpm4jbpm5

    jbpm4jbpm5是关于jbpm流程管理框架的专题,涵盖了jbpm4和jbpm5两个主要版本。jbpm是一个开源的工作流管理系统,用于帮助开发者实现业务流程自动化。以下是基于给定文件的信息,深入解析jbpm4和jbpm5的知识点: 1. *...

    jbpm发送邮件

    在配置完成后,jbpm就可以通过`mailService`发送邮件了。邮件的发送可以通过编写Java代码或者使用工作流定义(BPMN2模型)中的事件触发。例如,在BPMN2模型中,可以添加一个信号事件,并配置一个信号监听器来发送...

    jBPM4工作流应用开发指南.pdf

    jBPM4作为该系列的一个版本,提供了一套完整的流程管理和执行框架,允许开发者构建灵活的工作流应用,以实现业务流程自动化。本指南由胡奇编写,旨在为开发者提供一个全面的参考,帮助他们快速学习和掌握使用jBPM4...

    jbpm4案例源码

    这个"jbpm4案例源码"包含了jbpm4系统的核心组件和示例代码,帮助开发者深入理解jbpm4的工作原理和实践应用。《jBPM4工作流应用开发指南.pdf》这本书则进一步阐述了如何利用jbpm4来构建工作流应用。 jbpm4的核心功能...

    JBPM4 java源代码分包详解JBPM4

    7. **org.jbpm.pvm.internal.email**: 支持电子邮件功能,包括SPI接口和实现类,如`AddressResolver`、`MailProducer`和`MailSession`,用于自定义邮件发送。 8. **org.jbpm.pvm.internal.env**: 包含IoC...

    JBPM4 开发文档 实例 流程

    7. **活动(Action)**:预设的程序行为,如自动发送邮件,是流程中的自动操作。 **数据库表结构** - **JBPM4_DEPLOYMENT**:存储流程部署信息。 - **JBPM4_DEPLOYPROP**:记录流程部署的属性。 - **JBPM4_...

    JBPM4 表 详细介绍

    ### JBPM4 表结构详解 JBPM (JBoss Business Process Management) 是一款开源的工作流管理系统,被广泛应用于业务流程管理领域。JBPM4作为其一个版本,具有丰富的功能及特性,尤其在流程管理和任务分配方面表现突出...

    jbpm4.4 email没有验证bug解决

    原代的jbpm4.4 没有用户身份验证 而公司邮箱新浪邮箱等等 都必须要省份验证功能!

    jBPM4完整例子

    **jBPM4完整例子详解** jBPM4是一个企业级的工作流管理系统,它提供了强大的业务流程管理和工作流实现能力。这个"jBPM4完整例子"是一个基于SSH(Struts2、Spring、Hibernate)框架集成jBPM4.4的请假流程应用,非常...

    jbpm4web-JBPM4的一个web版本的Demo

    如果你在学习过程中遇到问题,或者没有足够的积分下载jbpm4web,可以通过描述中提供的链接访问博主的博客,寻找联系信息,通过QQ或邮件索取源代码。这种方式体现了开源社区互助共享的精神。 总结来说,jbpm4web是...

    jBPM4工作流示例jbpmDemo

    **jbPM4工作流示例jbpmDemo**是一款基于jBPM4的工作流管理系统实例,旨在帮助用户深入了解和掌握jBPM4工作流引擎的使用方法。jBPM4是一款强大的开源工作流管理系统,它提供了流程建模、执行以及监控等功能,广泛应用...

    jBPM 4使用手记

    **jBPM 4 使用手记** jBPM(Java Business Process Management)是一个开源的工作流管理系统,它提供了全面的业务流程管理和工作流解决方案。在jBPM 4这个版本中,开发者可以利用其强大的功能来设计、执行和管理...

    jBPM4入门基础环境配置

    **jBPM4入门基础环境配置** jBPM(Java Business Process Management)是一个开源的工作流管理系统,主要用于处理业务流程的建模、部署、执行和监控。jBPM4是其第四个主要版本,它提供了丰富的功能,包括流程定义、...

    jbpm4_table

    jbpm4。4中表之间的关系,jbpm4 表关系

    jbpm4 完整的请假流程

    jbpm4是一个基于Java的企业级工作流管理系统,用于设计、执行和管理业务流程。这个“jbpm4 完整的请假流程”是一个示例项目,旨在帮助初学者理解和实践jbpm4在处理业务流程,尤其是请假申请流程中的应用。在这个项目...

    JBPM4完整示例(包括lib库)

    JBPM4是一个强大的工作流管理系统,专为Java开发者设计,具备高度的可扩展性。它完全用Java语言编写,确保了跨平台的兼容性和良好的编程体验。JBPM4的核心特性之一是采用了Hibernate作为其持久层框架,使得数据管理...

    jbpm4请假实例代码

    5. **监听器和事件处理**:jbpm4支持监听器机制,可以监听流程中的特定事件,如任务创建、完成等,然后执行相应的回调逻辑,比如发送通知邮件。 6. **工作流引擎的使用**:jbpm4提供API来启动流程实例、分配任务、...

    jbpm4的员工请假例子原码

    【jbpm4的员工请假例子原码】是一个基于jbpm4流程引擎的示例项目,展示了如何在企业中实现一个简单的员工请假流程。这个Web项目是完全开源的,可以通过Eclipse这样的集成开发环境来打开和运行,对于学习和理解jbpm4...

Global site tag (gtag.js) - Google Analytics