Skip to content

Commit 7f9e408

Browse files
committed
#307, #310 (#249): for resource names, don't remove extensions anymore. I'm not sure why this was in there in the first place, but it was causing bugs, so I just removed it completely. Good riddance.
1 parent fa20c5e commit 7f9e408

File tree

2 files changed

+14
-30
lines changed

2 files changed

+14
-30
lines changed

modules/simple-java-mail/src/main/java/org/simplejavamail/converter/internal/mimemessage/MimeMessageHelper.java

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -234,15 +234,15 @@ private static BodyPart getBodyPartFromDatasource(final AttachmentResource attac
234234
throws MessagingException {
235235
final BodyPart attachmentPart = new MimeBodyPart();
236236
// setting headers isn't working nicely using the javax mail API, so let's do that manually
237-
final String resourceName = determineResourceName(attachmentResource, false, true);
238-
final String fileName = determineResourceName(attachmentResource, true, false);
237+
final String resourceName = determineResourceName(attachmentResource, true);
238+
final String fileName = determineResourceName(attachmentResource, false);
239239
attachmentPart.setDataHandler(new DataHandler(new NamedDataSource(fileName, attachmentResource.getDataSource())));
240240
attachmentPart.setFileName(fileName);
241241
final String contentType = attachmentResource.getDataSource().getContentType();
242242
ParameterList pl = new ParameterList();
243243
pl.set("filename", fileName);
244244
pl.set("name", fileName);
245-
attachmentPart.setHeader("Content-Type", contentType + pl.toString());
245+
attachmentPart.setHeader("Content-Type", contentType + pl);
246246
attachmentPart.setHeader("Content-ID", format("<%s>", resourceName));
247247
attachmentPart.setDisposition(dispositionType);
248248
return attachmentPart;
@@ -251,7 +251,7 @@ private static BodyPart getBodyPartFromDatasource(final AttachmentResource attac
251251
/**
252252
* Determines the right resource name and optionally attaches the correct extension to the name. The result is mime encoded.
253253
*/
254-
static String determineResourceName(final AttachmentResource attachmentResource, final boolean includeExtension, final boolean encodeResourceName) {
254+
static String determineResourceName(final AttachmentResource attachmentResource, final boolean encodeResourceName) {
255255
final String datasourceName = attachmentResource.getDataSource().getName();
256256

257257
String resourceName;
@@ -263,20 +263,12 @@ static String determineResourceName(final AttachmentResource attachmentResource,
263263
} else {
264264
resourceName = "resource" + UUID.randomUUID();
265265
}
266-
if (includeExtension && !valueNullOrEmpty(datasourceName)) {
266+
if (!valueNullOrEmpty(datasourceName)) {
267267
resourceName = possiblyAddExtension(datasourceName, resourceName);
268-
} else if (!includeExtension && resourceName.contains(".") && resourceName.equals(datasourceName)) {
269-
resourceName = removeExtension(resourceName);
270268
}
271269
return encodeResourceName ? MiscUtil.encodeText(resourceName) : resourceName;
272270
}
273271

274-
@NotNull
275-
private static String removeExtension(String resourceName) {
276-
final String extension = resourceName.substring(resourceName.lastIndexOf("."));
277-
return resourceName.replace(extension, "");
278-
}
279-
280272
@NotNull
281273
private static String possiblyAddExtension(final String datasourceName, String resourceName) {
282274
@SuppressWarnings("UnnecessaryLocalVariable")

modules/simple-java-mail/src/test/java/org/simplejavamail/converter/internal/mimemessage/MimeMessageHelperTest.java

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -45,64 +45,56 @@ public void setup() {
4545
public void determineResourceName1()
4646
throws IOException {
4747
AttachmentResource resource1 = new AttachmentResource(null, getDataSource("blahblah"));
48-
assertThat(MimeMessageHelper.determineResourceName(resource1, false, true)).isEqualTo("blahblah");
49-
assertThat(MimeMessageHelper.determineResourceName(resource1, true, true)).isEqualTo("blahblah");
48+
assertThat(MimeMessageHelper.determineResourceName(resource1, true)).isEqualTo("blahblah");
5049
}
51-
50+
5251
@Test
5352
public void determineResourceName2()
5453
throws IOException {
5554
AttachmentResource resource2 = new AttachmentResource(null, getDataSource("blahblah.txt"));
56-
assertThat(MimeMessageHelper.determineResourceName(resource2, false, true)).isEqualTo("blahblah");
57-
assertThat(MimeMessageHelper.determineResourceName(resource2, true, true)).isEqualTo("blahblah.txt");
55+
assertThat(MimeMessageHelper.determineResourceName(resource2, true)).isEqualTo("blahblah.txt");
5856
}
5957

6058
@Test
6159
public void determineResourceName3()
6260
throws IOException {
6361
AttachmentResource resource3 = new AttachmentResource("the resource", getDataSource(null));
64-
assertThat(MimeMessageHelper.determineResourceName(resource3, false, true)).isEqualTo("the resource");
65-
assertThat(MimeMessageHelper.determineResourceName(resource3, true, true)).isEqualTo("the resource");
62+
assertThat(MimeMessageHelper.determineResourceName(resource3, true)).isEqualTo("the resource");
6663
}
6764

6865
@Test
6966
public void determineResourceName4()
7067
throws IOException {
7168
AttachmentResource resource4 = new AttachmentResource("the resource", getDataSource("blahblah.txt"));
72-
assertThat(MimeMessageHelper.determineResourceName(resource4, false, true)).isEqualTo("the resource");
73-
assertThat(MimeMessageHelper.determineResourceName(resource4, true, true)).isEqualTo("the resource.txt");
69+
assertThat(MimeMessageHelper.determineResourceName(resource4, true)).isEqualTo("the resource.txt");
7470
}
7571

7672
@Test
7773
public void determineResourceName5()
7874
throws IOException {
7975
AttachmentResource resource5 = new AttachmentResource("the resource", getDataSource("blahblah"));
80-
assertThat(MimeMessageHelper.determineResourceName(resource5, false, true)).isEqualTo("the resource");
81-
assertThat(MimeMessageHelper.determineResourceName(resource5, true, true)).isEqualTo("the resource");
76+
assertThat(MimeMessageHelper.determineResourceName(resource5, true)).isEqualTo("the resource");
8277
}
8378

8479
@Test
8580
public void determineResourceName6()
8681
throws IOException {
8782
AttachmentResource resource6 = new AttachmentResource("the resource.txt", getDataSource("blahblah.txt"));
88-
assertThat(MimeMessageHelper.determineResourceName(resource6, false, true)).isEqualTo("the resource.txt");
89-
assertThat(MimeMessageHelper.determineResourceName(resource6, true, true)).isEqualTo("the resource.txt");
83+
assertThat(MimeMessageHelper.determineResourceName(resource6, true)).isEqualTo("the resource.txt");
9084
}
9185

9286
@Test
9387
public void determineResourceName7()
9488
throws IOException {
9589
AttachmentResource resource7 = new AttachmentResource("the resource.txt", getDataSource("blahblah"));
96-
assertThat(MimeMessageHelper.determineResourceName(resource7, false, true)).isEqualTo("the resource.txt");
97-
assertThat(MimeMessageHelper.determineResourceName(resource7, true, true)).isEqualTo("the resource.txt");
90+
assertThat(MimeMessageHelper.determineResourceName(resource7, true)).isEqualTo("the resource.txt");
9891
}
9992

10093
@Test
10194
public void determineResourceName_ignoreExtensionFromResource()
10295
throws IOException {
10396
AttachmentResource resource7 = new AttachmentResource("the resource.txt", getDataSource("blahblah.1/www/get?id=3"));
104-
assertThat(MimeMessageHelper.determineResourceName(resource7, false, true)).isEqualTo("the resource.txt");
105-
assertThat(MimeMessageHelper.determineResourceName(resource7, true, true)).isEqualTo("the resource.txt");
97+
assertThat(MimeMessageHelper.determineResourceName(resource7, true)).isEqualTo("the resource.txt");
10698
}
10799

108100
private ByteArrayDataSource getDataSource(@Nullable String name)

0 commit comments

Comments
 (0)