Sample code for 30+ languages & platforms
Java

Rename Email Attachments After Adding

Demonstrates how to rename email attachments after adding but before sending.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Email;
import com.chilkatsoft.chilkat2.MailMan;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        MailMan mailman = new MailMan();

        mailman.setSmtpHost("smtp.my-mail-server.com");
        mailman.setSmtpUsername("MY_SMTP_USERNAME");
        mailman.setSmtpPassword("MY_SMTP_PASSWORD");
        mailman.setSmtpSsl(true);
        mailman.setSmtpPort(465);

        Email email = new Email();

        email.setSubject("This is a test");
        email.setBody("This is a test");
        email.setFrom("Chilkat Support <support@chilkatsoft.com>");
        email.addTo("Chilkat Admin", "admin@chilkatsoft.com");
        // To add more recipients, call AddTo, AddCC, or AddBcc once per recipient.

        // Add some attachments.
        // The AddFileAttachment method returns the value of the content-type it chose for the attachment.
        String contentType;
        try {
            contentType = email.addFileAttachment("qa_data/jpg/starfish.jpg");

            contentType = email.addFileAttachment("qa_data/pdf/fishing.pdf");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // If we save the email to a .eml, we can examine in a text editor.
        try {
            email.saveEml("qa_output/e1.eml");

            // We see the following in the e1.eml
            // Notice that Chilkat replaced the full path with just the filename.
            // The full local path is not part of the email that gets sent..

            // ...
            // --------------020807050607070004010609
            // Content-Type: image/jpeg; name="starfish.jpg"
            // Content-Transfer-Encoding: base64
            // Content-Disposition: attachment; filename="starfish.jpg"
            //
            // ...
            // --------------020807050607070004010609
            // Content-Type: application/pdf; name="fishing.pdf"
            // Content-Transfer-Encoding: base64
            // Content-Disposition: attachment; filename="fishing.pdf"
            // ...

            // Before sending, each filename can be changed within the email object.
            // For example:
            email.setAttachmentFilename(0, "orange_starfish.jpg");
            email.setAttachmentFilename(1, "tuna_fishing.pdf");

            // Look at the new MIME source of the email in a  text editor...
            email.saveEml("qa_output/e2.eml");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            System.out.println("Failed to save .eml");
            return;
        }

        // You'll see this:

        // ...
        // --------------020807050607070004010609
        // Content-Type: image/jpeg; name="orange_starfish.jpg"
        // Content-Transfer-Encoding: base64
        // Content-Disposition: attachment; filename="orange_starfish.jpg"
        //
        // ...
        // --------------020807050607070004010609
        // Content-Type: application/pdf; name="tuna_fishing.pdf"
        // Content-Transfer-Encoding: base64
        // Content-Disposition: attachment; filename="tuna_fishing.pdf"
        // ...

        // Send the email with the updated filenames..
        try {
            mailman.sendEmail(email);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        try {
            mailman.closeSmtpConnection();
        } catch (ChilkatException e) {
            System.out.println("Connection to SMTP server not closed cleanly.");
        }

        System.out.println("Mail with attachments sent!");
    }
}