JavaMail sending mail attachment from string - encoding UTF-8
This is a sample code that I use to send files (irrespective on encoding or data structure).
BodyPart fileBodyPart = new MimeBodyPart();
fileBodyPart.setDataHandler(new DataHandler(fileDataSource));
fileBodyPart.setFileName(attachment.getName());
fileBodyPart.setHeader("Content-Type", fileDataSource.getContentType());
fileBodyPart.setHeader("Content-ID", attachment.getName());
fileBodyPart.setDisposition(Part.INLINE);
Where fileDataSource
is a javax.activation.DataSource
(text file will be in here), and
fileBodyPart.setDisposition(Part.INLINE);
(PART.INLINE
means datasource is inlined with the message body, just like HTML emails, PART.ATTACHMENT
means datasource is an attachment).
Hope this helps.
Set the content type to application/octet-stream
:
MimeBodyPart attachmentPart = new MimeBodyPart();
try {
DataSource ds = new ByteArrayDataSource(attachment.getBytes("UTF-8"), "application/octet-stream");
attachmentPart = new MimeBodyPart();
attachmentPart.setDataHandler(new DataHandler(ds));
}
catch (Exception e) {
Logger.getLogger("Blina").log(Level.SEVERE, Misc.getStackTrace(e));
}
attachmentPart.setFileName(fileName);
multipart.addBodyPart(attachmentPart);
// Put parts in message
msg.setContent(multipart);
If problem is in file name, rather than in body, following code helped in my (hebrew) case:
MimeBodyPart attachment = new MimeBodyPart();
attachment.setFileName(MimeUtility.encodeText(filename, "UTF-8", null));
Had similar case, following code solved it:
MimeBodyPart att = new MimeBodyPart();
att.setFileName(MimeUtility.encodeText(fileName));