sachin
sachin

Reputation: 1457

Mail Sending problem

public class MailEx {
public static void main(String[] args) {
    try {

        String userName = "[email protected]";          
        String password = "123";            
        String hostName = "smtp.gmail.com";
        String fromName = "Splendore Bkk";
        String to[] = {"[email protected]"};

        System.out.println("to.length::"+to.length);

        Properties props = new Properties();
        String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; 

        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "465");
        props.put("mail.debug", "true");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");     
        props.setProperty("mail.smtp.socketFactory.port", "465");
        props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
        props.setProperty("mail.smtp.socketFactory.fallback", "false");
        System.out.println("to.length:sadfsadfds:"+to.length);
        // Get the default Session object.
        Session session = Session.getInstance(props);

        // Create a default MimeMessage object.
        MimeMessage message1 = new MimeMessage(session);

        // Set the RFC 822 "From" header field using the
        // value of the InternetAddress.getLocalAddress method.
        message1.setFrom(new InternetAddress(userName,fromName));

        Address[] addresses = new Address[to.length];
        for (int i = 0; i < to.length; i++) {
            Address address = new InternetAddress(to[i]);               
            addresses[i] = address;
            // Add the given addresses to the specified recipient type.
            message1.addRecipient(Message.RecipientType.TO, new InternetAddress(to[i]));
        }       
        // Set the "Subject" header field.
        message1.setSubject("Testing");

        // Sets the given String as this part's content,
        // with a MIME type of "text/plain".
        Multipart mp = new MimeMultipart("alternative");
        MimeBodyPart mbp = new MimeBodyPart();
        mbp.setContent("Hii from cc", "text/html");
        mp.addBodyPart(mbp);
        message1.setContent(mp);
        message1.saveChanges();

        // Send message
        Transport transport = session.getTransport("smtp");
        transport.connect(hostName,userName,password);
        transport.sendMessage(message1,addresses);
        transport.close();


    }catch (Exception e) {
        e.printStackTrace();
    }

}

}

I getting the Error ....

DEBUG: JavaMail version 1.4ea
DEBUG: java.io.FileNotFoundException: ..\Java\jdk1.6.0\jre\lib\javamail.providers (The system cannot find the file specified)
DEBUG: !anyLoaded
DEBUG: not loading resource: /META-INF/javamail.providers
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
    at javax.mail.Session.loadProvidersFromStream(Session.java:928)
    at javax.mail.Session.access$000(Session.java:174)
    at javax.mail.Session$1.load(Session.java:870)
    at javax.mail.Session.loadResource(Session.java:1084)
    at javax.mail.Session.loadProviders(Session.java:889)
    at javax.mail.Session.<init>(Session.java:210)
    at javax.mail.Session.getInstance(Session.java:249)
    at com.test.MailEx.main(MailEx.java:41)

So can u tell me what's the problem...

Upvotes: 3

Views: 25012

Answers (3)

Vladi
Vladi

Reputation: 2010

I fix it , look how my code is writing

must to approve before in your google account Set Allow less secure apps to ON example how i did it https://stackoverflow.com/a/64023055/2347210
Use javax.mail version 1.4.7

import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public void SendEmail() throws Exception {
String EmailUsername = "[email protected]";
String PasswordUsername = "SomePassword";

    Properties props = new Properties();
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "587");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");

    Session session = Session.getInstance(props, new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(EmailUsername, PasswordUsername);
        }
    });

    try {
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(EmailUsername));
        message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected]"));
        message.setSubject("This is the Qa test!");
        message.setText("this is the report");
        Transport.send(message);

        System.out.println("Message Sent!");

    } catch (MessagingException mex) {
        mex.printStackTrace();
    }
}

Upvotes: 0

Kishan Bheemajiyani
Kishan Bheemajiyani

Reputation: 3439

See this this have solution

my ans check it out

this is having desired solution for your problem

Hope that will help.

Upvotes: -1

ahmet alp balkan
ahmet alp balkan

Reputation: 45312

To avoid DEBUG warnings, create files javamail.providers, javamail.address.map, javamail.default.address.map, javamail.default.providers under

 (Program Files)\Java\jdk1.6.0\jre\lib\

folder.

About the error, NoClassDefFoundError, well you simply didn't add JavaMail to your classpath. If you are using Eclipse, right click project, follow Build Path ≥ Add Libraries or something like that and add javamail's jar file (which you should locate under your lib/ folder) to classpath of your project.

Upvotes: 9

Related Questions