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.src != null) {
DataSource ds = null;
Source source = resolver.resolveURI(this.src);
sourcesList.add(source);
if (source.exists()) {
ds =
new SourceDataSource(
source,
(this.srcMimeType == null
? source.getMimeType()
: this.srcMimeType),
this.src.substring(this.src.lastIndexOf('/') + 1));
}
this.message.setDataHandler(new DataHandler(ds));
} else 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.src != null) {
DataSource ds = null;
Source source = resolver.resolveURI(this.src);
sourcesList.add(source);
if (source.exists()) {
ds =
new SourceDataSource(
source,
(this.srcMimeType == null
? source.getMimeType()
: this.srcMimeType),
this.src.substring(this.src.lastIndexOf('/') + 1));
}
bodypart.setDataHandler(new DataHandler(ds));
bodypart.setFileName(ds.getName());
multipart.addBodyPart(bodypart);
} else 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 {