Scriptrunner: How to add attachment

Dieter Scheruga June 15, 2015

Hi,

in my code example the attachment is not included in the email.
I only get the email with subject and body "Body Text".

Why is the attachment not inlcuded?

I don't get any error.

Thanks

Dieter

 

SMTPMailServer    mailServer = mailServerManager.getDefaultSMTPMailServer();
    
   Email email = new Email("dieter@home.at"); 
   email.setFrom(fromStr);
 
   BodyPart mbp = new MimeBodyPart();
   mbp.setFileName("SLA_Report");
   mbp.attachFile("/tmp/SLA_Report.csv");
            
            
   email = new EmailBuilder(email, "text/plain", Locale.GERMAN)
                .withSubject("Hello")
                .withBody("Body text")           
                .addAttachment(mbp)
                .renderNow();

   mailServer.send(email)

2 answers

1 accepted

0 votes
Answer accepted
JamieA
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
June 15, 2015

There is more to it than that... looking at the SendCustomEmail source, which is in the plugin, should help.

1 vote
Dieter Scheruga June 15, 2015

Hi Jamie,

thanks for you hint. It's now working. I've to use the email queue ....

BR

Dieter

Solution:

Email email = new Email("dieter@home.at"); 
        email.setFrom(fromStr);
        email.setSubject("Hello");
        email.setMimeType("text/plain");
        email.setBody("Body Text");

        Multipart multipart = new MimeMultipart("mixed");
        MimeBodyPart attachPart = new MimeBodyPart();
        String attachFile = "/tmp/SLA_Report.csv";
        java.io.File csvFile = new java.io.File("/tmp/SLA_Report.csv");
        FileDataSource source = new FileDataSource(csvFile);
        attachPart.setDataHandler(new DataHandler(source));
        attachPart.setFileName(csvFile.getName());
        
        multipart.addBodyPart(attachPart);
        email.setMultipart(multipart);
        
        SingleMailQueueItem item = new SingleMailQueueItem(email);
        ComponentAccessor.getMailQueue().addItem(item);

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events