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源码jbpm4源码jbpm4源码
我自己写的一个邮件发送的小demo,虽然不是很好,但是让我知道了很多知识点,自己一步一步研究的。
原代的jbpm4.4 没有用户身份验证 而公司邮箱新浪邮箱等等 都必须要省份验证功能!
jbpm应用开发指面(胡奇) jbpm4.3表结构和表字段说明 [jBPM开发指南].高杰.文字版 jBPM5_用户手册-中文版
jboss jbpm4最新开发包 采用了pvm框架
5.1表JBPM4_DEPLOYMENT 7 5.2 表JBPM4_DEPLOYPROP 7 5.3 表JBPM4_EXECUTION 8 5.4 表JBPM4_HIST_ACTINST 9 5.5 表JBPM4_HIST_DETAIL 9 5.6 表JBPM4_HIST_PROCINST 10 5.7 表JBPM4_HIST_TASK 11 5.8 表JBPM4_HIST_VAR...
java源代码分包详解JBPM4 java源代码分包详解JBPM4
jbpm4。4中表之间的关系,jbpm4 表关系
JBPM4 SSH EXTJS JBPM SSH EXTJS JBPM4 SSH EXTJS JBPM SSH EXTJS JBPM4 SSH EXTJS JBPM SSH EXTJS JBPM4 SSH EXTJS JBPM SSH EXTJS 希望对大家有帮助。
jBPM4工作流应用开发指南 胡奇写的,十分赞!!
jbpm发送邮件,经过测试。只需要在jbpm.customer.cfg.xml配置文件中,加上自己的163邮箱用户名和密码就可以了。找到需要加大地方哦,别加错地方了!
jbpm4新手教程
,jbpm4的源码,分支,会签等一些中国特色建立下载《jBPM4工作流应用开发指南.pdf》这本书
这是jbpm4的安装配置介绍文件,详细的介绍了jbpm4与eclipse的集成
整理的别人JBPM4 学习资料, 工作流学习文档
JBPM4 开发文档 实例 流程 JBPM4 开发文档 实例 流程 JBPM4 开发文档 实例 流程
JBPM4 表结构概要说明 操作信息变化 各字段详细说明
本示例是jBPM4工作流示例jbpmDemo,详细演示了jBPM4工作流引擎的使用,对工作流采用Canvas动画形象演示,非常实用。也非常先进和有趣。 希望您喜欢。
风中叶老师讲的JBPM4与Spring整合例子代码 JBPM4 Spring OA工作流系统
jbpm jbpm4.3.jar DDDDDDDD