0

I'm fully aware that this topic has already been touched upon so many times already. Yet, having browsed through many of them couldn't solve my problem so here I am asking for your opinion.

    package email1;

import java.io.IOException;
import java.util.Date;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

public class EmailAttachmentSender {

    public static void sendEmailWithAttachments(String host, String port,
            final String userName, final String password, String toAddress,
            String subject, String message, String[] attachFiles)
            throws AddressException, MessagingException {
        // sets SMTP server properties
        Properties properties = new Properties();
        properties.put("mail.smtp.host", host);
        properties.put("mail.smtp.port", port);
        properties.put("mail.smtp.auth", "true");
        properties.put("mail.smtp.starttls.enable", "true");
        properties.put("mail.user", userName);
        properties.put("mail.password", password);

        // creates a new session with an authenticator
        Authenticator auth = new Authenticator() {
            public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(userName, password);
            }
        };
        Session session = Session.getInstance(properties, auth);

        // creates a new e-mail message
        Message msg = new MimeMessage(session);

        msg.setFrom(new InternetAddress(userName));
        InternetAddress[] toAddresses = { new InternetAddress(toAddress) };
        msg.setRecipients(Message.RecipientType.TO, toAddresses);
        msg.setSubject(subject);
        msg.setSentDate(new Date());

        // creates message part
        MimeBodyPart messageBodyPart = new MimeBodyPart();
        messageBodyPart.setContent(message, "text/html");

        // creates multi-part
        Multipart multipart = new MimeMultipart();
        multipart.addBodyPart(messageBodyPart);

        // adds attachments
        if (attachFiles != null && attachFiles.length > 0) {
            for (String filePath : attachFiles) {
                MimeBodyPart attachPart = new MimeBodyPart();

                try {
                    attachPart.attachFile(filePath);
                } catch (IOException ex) {
                    ex.printStackTrace();
                }

                multipart.addBodyPart(attachPart);
            }
        }

        // sets the multi-part as e-mail's content
        msg.setContent(multipart);

        // sends the e-mail
        Transport.send(msg);

    }

    /**
     * Test sending e-mail with attachments
     */
    public static void main(String[] args) {
        // SMTP info
        String host = "smtp.gmail.com";
        String port = "587";
        String mailFrom = "abc@gmail.com";
        String password = "abc";

        // message info
        String mailTo = "def@gmail.com";
        String subject = "New email with attachments";
        String message = "I have some attachments for you.";

        // attachments
        String[] attachFiles = new String[1];
        attachFiles[0] = "D:\\Documents\\java\\2. 2014 VN Post Survey Seminar Presentation.pdf";
        //attachFiles[1] = "e:/Test/Music.mp3";
        //attachFiles[2] = "e:/Test/Video.mp4";

        try {
            sendEmailWithAttachments(host, port, mailFrom, password, mailTo,
                subject, message, attachFiles);
            System.out.println("Email sent.");
        } catch (Exception ex) {
            System.out.println("Could not send email.");
            ex.printStackTrace();
        }
    }
}

Compiling went smoothly with javac EmailAttachmentSender.java.

But after that, when I run java EmailAttachmentSender the system printed out this line:

Error: Could not find or load main class EmailAttachmentSender

I've checked my CLASSPATH, also tried java email1.EmailAttachmentSender but to no avail.

Would you please help me check this.

Thank you very much for your help.

Zestos.

Zestos
  • 15
  • 1
  • 7
  • What compiler are you using? What is the name of the file? – Matt C Dec 10 '14 at 13:59
  • 1
    `java email1.EmailAttachmentSender` should be the correct invocation (from the folder containing `email1` folder which contains `EmailAttachmentSender.class`). Could you share the error message for that? – Gábor Bakos Dec 10 '14 at 14:00
  • ... along with your classpath, where you're running the code from etc. Basically the code within your class is entirely irrelevant - but your environment is *much* more important here. – Jon Skeet Dec 10 '14 at 14:02
  • @MatthewC: I'm using Notepad++ only. The name of the file is EmailAttachmentSender as mentioned above. @GáborBakos: The only Error message I got was the message of `Could not find or load mail class ...` @JonSkeet: Would you please elaborate on that? I'm new to this and all so details will really help. Thanks in advance. – Zestos Dec 10 '14 at 14:02

0 Answers0