*/
public void send(SourceResolver resolver) throws AddressException, MessagingException {
List sourcesList = new ArrayList();
if (this.from == null) {
throw new AddressException("no from address");
} else {
try {
this.message.setFrom(new InternetAddress(this.from));
} catch (AddressException e) {
throw new AddressException("invalid from address: " + this.from + ": " + e.getMessage());
}
}
if (this.to == null) {
throw new AddressException("no to address");
} else {
try {
this.message.setRecipients(RecipientType.TO, InternetAddress.parse(this.to));
} catch (AddressException e) {
throw new AddressException("invalid to address: " + this.to + ": " + e.getMessage());
}
}
if (this.cc != null) {
try {
this.message.setRecipients(RecipientType.CC, InternetAddress.parse(this.cc));
} catch (AddressException e) {
throw new AddressException("invalid cc address: " + this.cc + ": " + e.getMessage());
}
}
if (this.bcc != null) {
try {
this.message.setRecipients(RecipientType.BCC, InternetAddress.parse(this.bcc));
} catch (AddressException e) {
throw new AddressException("invalid bcc address: " + this.bcc + ": " + e.getMessage());
}
}
if (this.subject != null) {
this.message.setSubject(this.subject);
}
message.setSentDate(new Date());
Attachment a = null;
try {
if (this.attachmentList.isEmpty()) {
if (this.body != null) {
if (this.charset != null) {
this.message.setText(this.body, this.charset);
} else {
this.message.setText(this.body);
}
}
} else {
Multipart multipart = new MimeMultipart();
BodyPart bodypart = null;
if (this.body != null) {
bodypart = new MimeBodyPart();
bodypart.setText(this.body);
multipart.addBodyPart(bodypart);
}
this.message.setContent(multipart);
for (Iterator i = this.attachmentList.iterator(); i.hasNext();) {
a = (Attachment) i.next();
DataSource ds = null;
if (a.isURL) {
String name = (String) a.getObject();
Source src = resolver.resolveURI(name);
sourcesList.add(src);
if (src.exists()) {
ds = new SourceDataSource(
src,
a.getType(src.getMimeType()),
a.getName(name.substring(name.lastIndexOf('/') + 1)));
}
} else {
if (a.getObject() instanceof Part) {
Part part = (Part) a.getObject();
ds = new FilePartDataSource(
part,
a.getType(part.getMimeType()),
a.getName(part.getUploadName()));
} else {
// TODO: other classes?
throw new AddressException("Not yet supported: " + a.getObject());
}
}
bodypart = new MimeBodyPart();
bodypart.setDataHandler(new DataHandler(ds));
bodypart.setFileName(ds.getName());
multipart.addBodyPart(bodypart);
}
}
Transport.send(this.message);
} catch (MessagingException me) {
throw new MessagingException(me.getMessage());
} catch (MalformedURLException e) {
throw new AddressException("Malformed attachment URL: " + a.getObject() + " error " + e.getMessage());
} catch (IOException e) {
throw new AddressException(
"IOException accessing attachment URL: " + a.getObject() + " error " + e.getMessage());
} finally {
if (sourcesList != null) {
for (Iterator j = sourcesList.iterator(); j.hasNext();) {
resolver.release((Source) j.next());