Author: michiel
Date: 2010-05-26 10:29:38 +0200 (Wed, 26 May 2010)
New Revision: 42270
Modified:
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/EmailBuilder.java
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/EmailHandler.java
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/SendMail.java
mmbase/trunk/applications/email/src/main/java/org/mmbase/datatypes/InternetAddressDataType.java
mmbase/trunk/applications/email/src/main/java/org/mmbase/datatypes/VerifyEmailProcessor.java
Log:
merged from 1.9 branch
Modified:
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/EmailBuilder.java
===================================================================
---
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/EmailBuilder.java
2010-05-26 08:26:41 UTC (rev 42269)
+++
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/EmailBuilder.java
2010-05-26 08:29:38 UTC (rev 42270)
@@ -90,7 +90,8 @@
/**
* init
*/
- @Override public boolean init() {
+ @Override
+ public boolean init() {
super.init ();
String property = getInitParameter("expireTime");
@@ -143,7 +144,8 @@
return true;
}
- @Override public void shutdown() {
+ @Override
+ public void shutdown() {
if (expireHandler != null) {
try {
expireHandler.getClass().getMethod("cancel",
Boolean.TYPE).invoke(expireHandler, Boolean.TRUE);
@@ -188,8 +190,8 @@
}
{
- addFunction(new NodeFunction/*<Void>*/("mail", MAIL_PARAMETERS,
ReturnType.VOID) {
- protected Boolean getFunctionValue(Node node, Parameters
parameters) {
+ addFunction(new NodeFunction<Void>("mail", MAIL_PARAMETERS,
ReturnType.VOID) {
+ protected Void getFunctionValue(Node node, Parameters
parameters) {
try {
sendMail(node, parameters);
} catch (javax.mail.MessagingException me) {
@@ -199,7 +201,7 @@
}
}
);
- addFunction(new NodeFunction/*<Void>*/("startmail", MAIL_PARAMETERS,
ReturnType.VOID) {
+ addFunction(new NodeFunction<Void>("startmail", MAIL_PARAMETERS,
ReturnType.VOID) {
protected Void getFunctionValue(final Node node, final
Parameters parameters) {
org.mmbase.util.ThreadPools.jobsExecutor.execute(new
Runnable() {
public void run() {
@@ -219,7 +221,7 @@
// This is a silly function.
// We could override setStringValue on 'type' itself. Perhaps that
even already works.
- addFunction(new NodeFunction/*<Void>*/("settype", MAIL_PARAMETERS,
ReturnType.VOID) {
+ addFunction(new NodeFunction<Void>("settype", MAIL_PARAMETERS,
ReturnType.VOID) {
protected Void getFunctionValue(final Node node, Parameters
parameters) {
log.debug("We're in startmail - args: " + parameters);
setType(node, parameters);
Modified:
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/EmailHandler.java
===================================================================
---
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/EmailHandler.java
2010-05-26 08:26:41 UTC (rev 42269)
+++
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/EmailHandler.java
2010-05-26 08:29:38 UTC (rev 42270)
@@ -59,6 +59,7 @@
Map<String, String> headers = getHeaders(node);
+ boolean mailed = false;
if (toGroup.size() > 0) {
// bulk-mailing
Set<NodeRecipient> toUsers = new
LinkedHashSet<NodeRecipient>(getTo(node));
@@ -294,15 +295,18 @@
mailResult = EmailBuilder.getSendMail().sendMail(from,
to.email, body, headers);
} else {
MimeMultipart mmpart =
MimeMessageGenerator.getMimeMultipart(body, node);
- if (mmpart == null) throw new NullPointerException();
+ if (mmpart == null) {
+ throw new NullPointerException();
+ }
mailResult =
EmailBuilder.getSendMail().sendMultiPartMail(from, to.email, headers, mmpart);
}
} catch (MessagingException me) {
+ mailResult = false;
exception = me;
}
if (! mailResult) {
- log.warn("Mail to " + to.email + " failed", exception);
+ log.warn("Mail to " + to.email + " failed", exception);
if (node.getNodeManager().hasField("mailstatus")) {
node.setValue("mailstatus", EmailBuilder.STATE_FAILED);
}
@@ -316,7 +320,9 @@
node.setValue("mailstatus", EmailBuilder.STATE_DELIVERED);
}
}
- if (exception != null) throw exception;
+ if (exception != null) {
+ throw exception;
+ }
return true;
Modified:
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/SendMail.java
===================================================================
---
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/SendMail.java
2010-05-26 08:26:41 UTC (rev 42269)
+++
mmbase/trunk/applications/email/src/main/java/org/mmbase/applications/email/SendMail.java
2010-05-26 08:29:38 UTC (rev 42270)
@@ -258,14 +258,16 @@
try {
MimeMessage msg = constructMessage(from, onlyTo, headers);
- if (mmpart == null) throw new NullPointerException();
+ if (mmpart == null) {
+ throw new NullPointerException();
+ }
msg.setContent(mmpart);
Transport.send(msg);
EventManager.getInstance().propagateEvent(new
EmailEvent.Sent(msg));
emailSent++;
- log.debug("JMimeSendMail done.");
+ log.debug("JMimeSendMail to " + Arrays.asList(onlyTo) + "
done.");
return true;
} catch (javax.mail.MessagingException e) {
emailFailed++;
@@ -474,8 +476,8 @@
MimeMessage msg = constructMessage(from, onlyTo, headers);
msg.setText(data, mailEncoding);
Transport.send(msg);
+ log.debug("SendMail to " + to + " done.");
EventManager.getInstance().propagateEvent(new
EmailEvent.Sent(msg));
- log.debug("SendMail done.");
return true;
} else {
log.service("not sending mail to " + to + " because it does
not match " + onlyToPattern);
@@ -665,12 +667,12 @@
log.service("JMSendMail sending mail to " + to + " cc:" +
cc + " bcc:" + bcc + " (node " + n.getNumber() + ")" + " from " + from + "
(mime-type " + mimeType + ") using " + session);
}
Transport.send(msg, onlyto);
+ log.debug("JMSendMail to " + onlyto + " done.");
EventManager.getInstance().propagateEvent(new
EmailEvent.Sent(msg));
} else {
- log.debug("nothing to do");
+ log.debug("nothing to do for JSMSendMail");
}
- log.debug("JMSendMail done.");
} catch (javax.mail.MessagingException e) {
log.error("JMSendMail failure: " + e.getMessage(), e);
errors.append("\nMessaging: " + e.getMessage());
Modified:
mmbase/trunk/applications/email/src/main/java/org/mmbase/datatypes/InternetAddressDataType.java
===================================================================
---
mmbase/trunk/applications/email/src/main/java/org/mmbase/datatypes/InternetAddressDataType.java
2010-05-26 08:26:41 UTC (rev 42269)
+++
mmbase/trunk/applications/email/src/main/java/org/mmbase/datatypes/InternetAddressDataType.java
2010-05-26 08:29:38 UTC (rev 42270)
@@ -40,7 +40,7 @@
super(name);
}
- protected Collection/*<LocalizedString>*/
validateCastValue(Collection/*<LocalizedString>*/ errors, Object castValue,
Object value, Node node, Field field) {
+ protected Collection<LocalizedString>
validateCastValue(Collection<LocalizedString> errors, Object castValue, Object
value, Node node, Field field) {
log.debug("Validating " + value);
errors = super.validateCastValue(errors, castValue, value, node,
field);
if (value == null) return errors;
@@ -73,7 +73,11 @@
restriction.setLocal(Boolean.valueOf(l));
}
- class InternetAddressRestriction extends AbstractRestriction/*<Integer>*/ {
+ public void setRestrictionEnforceStrength(String ef) {
+ restriction.setEnforceStrength(DataTypes.getEnforceStrength(ef));
+ }
+
+ class InternetAddressRestriction extends AbstractRestriction<Integer> {
protected boolean local = false;
InternetAddressRestriction(InternetAddressRestriction source) {
super(source);
@@ -112,10 +116,15 @@
if (log.isDebugEnabled()) {
log.debug("Found " + Arrays.asList(ia) + " this is valid
if " + ia.length + " <= " + value);
}
- if (! local) {
- for (InternetAddress a : ia) {
- if (a.getAddress().indexOf("@") == -1) { // not
entirely sure that this is absolutely correct
- log.debug("Local addresses not allowed");
+ for (InternetAddress a : ia) {
+ if (!local) {
+ a.validate();
+ String ad = a.getAddress();
+ int lastAt = ad.lastIndexOf('@');
+ String[] domain = ad.substring(lastAt +
1).split("\\.");
+ log.debug("Domain" + Arrays.asList(domain));
+ if (domain.length < 2) {
+ log.debug("Too short domain for " + ad);
return false;
}
}
Modified:
mmbase/trunk/applications/email/src/main/java/org/mmbase/datatypes/VerifyEmailProcessor.java
===================================================================
---
mmbase/trunk/applications/email/src/main/java/org/mmbase/datatypes/VerifyEmailProcessor.java
2010-05-26 08:26:41 UTC (rev 42269)
+++
mmbase/trunk/applications/email/src/main/java/org/mmbase/datatypes/VerifyEmailProcessor.java
2010-05-26 08:29:38 UTC (rev 42270)
@@ -252,6 +252,19 @@
if (log.isDebugEnabled()) {
log.debug("Commit for " + node + " " + emailField + " " +
node.getChanged());
}
+ if (onlyForSelf) {
+ try {
+ int myNode =
node.getCloud().getCloudContext().getAuthentication().getNode(node.getCloud().getUser());
+ log.debug("Comparing " + node.getNumber() + " with " + myNode);
+ if (myNode != node.getNumber()) {
+ log.debug("Logged in as someone different. Ignoring");
+ return;
+ }
+ } catch (UnsupportedOperationException uoe) {
+ log.debug(uoe);
+ return;
+ }
+ }
if ((node.getChanged().contains(emailField) && !
node.getChanged().contains(field.getName())) || node.isNew()) {
String email = node.getStringValue(emailField);
if ("".equals(email)) {
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs