-->

SMTP client Java program

2020-07-30 03:13发布

问题:

I am totally new to Java Mail. I first wanted to execute the program (which i had through my seniors )and see whether everything is working fine. So when i compile that code i get errors with all the class and packages of Java mail being not found.
Could anyone please list out the things that i need for my program to compile and execute without any problems. I had downloaded the "JAva Mail 1.4.5" but there was no installer file in that?
I have JAva 1.6 and Windows XP
Please Help........
Errors :
C:>javac SMTPClient.java SMTPClient.java:2: package javax.mail does not exist import javax.mail.; ^ SMTPClient.java:3: package javax.mail.internet does not exist import javax.mail.internet.; ^ SMTPClient.java:18: cannot find symbol symbol : class Session location: class SMTPClient Session session = Session.getDefaultInstance(properties); ^ SMTPClient.java:18: cannot find symbol symbol : variable Session location: class SMTPClient Session session = Session.getDefaultInstance(properties); ^ SMTPClient.java:21: cannot find symbol symbol : class MimeMessage location: class SMTPClient MimeMessage message = new MimeMessage(session); ^ SMTPClient.java:21: cannot find symbol symbol : class MimeMessage location: class SMTPClient MimeMessage message = new MimeMessage(session); ^ SMTPClient.java:25: cannot find symbol symbol : class InternetAddress location: class SMTPClient message.setFrom(new InternetAddress(from)); ^ SMTPClient.java:28: package Message does not exist message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

                                ^

SMTPClient.java:28: cannot find symbol symbol : class InternetAddress location: class SMTPClient message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

                                                       ^

SMTPClient.java:40: cannot find symbol symbol : class Transport location: class SMTPClient Transport t = session.getTransport("smtps"); ^ 10 errors

C:>

回答1:

Download the java mail.jar and security.jar

1.Copy the below code to notepad and save as EmailAgent.java (change the email adresses and password accordingly)

import java.security.Security; 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 class EmailAgent { private static final String SMTP_HOST_NAME = "smtp.gmail.com"; private static final String SMTP_PORT = "465"; private static final String emailMsgTxt = "Test Message Contents"; private static final String emailSubjectTxt = "A test from gmail"; private static final String emailFromAddress = "abcd@gmail.com"; private static final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; private static final String[] sendTo = { "xyz@gmail.com" }; public static void main(String args[]) throws Exception { Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); new EmailAgent().sendSSLMessage(sendTo, emailSubjectTxt, emailMsgTxt, emailFromAddress); System.out.println("Sucessfully Sent mail to All Users"); } public void sendSSLMessage(String recipients[], String subject, String message, String from) throws MessagingException { boolean debug = true; Properties props = new Properties(); props.put("mail.smtp.host", SMTP_HOST_NAME); props.put("mail.smtp.auth", "true"); props.put("mail.debug", "true"); props.put("mail.smtp.port", SMTP_PORT); props.put("mail.smtp.socketFactory.port", SMTP_PORT); props.put("mail.smtp.socketFactory.class", SSL_FACTORY); props.put("mail.smtp.socketFactory.fallback", "false"); Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("abcd@gmail.com", "password"); } }); session.setDebug(debug); Message msg = new MimeMessage(session); InternetAddress addressFrom = new InternetAddress(from); msg.setFrom(addressFrom); InternetAddress[] addressTo = new InternetAddress[recipients.length]; for (int i = 0; i < recipients.length; i++) { addressTo[i] = new InternetAddress(recipients[i]); } msg.setRecipients(Message.RecipientType.TO, addressTo); // Setting the Subject and Content Type msg.setSubject(subject); msg.setContent(message, "text/plain"); Transport.send(msg); } }
  1. Go to run, type cmd and press enter

  2. Navigate to path where EmailAgent.java file is saved.

  3. Copy your mail.jar and security.jar to the same directory where EmailAgent.java is saved

  4. compile java file

    javac -cp .;mail.jar;security.jar EmailAgent.java

  5. Run compiled java class

    java -cp .;mail.jar;security.jar EmailAgent

And check your sendTo email address inbox.. Bingo :)



回答2:

If Java is complaining about not finding packages you probably don't have those particular packages on your classpath.

Java Libraries are normally found in a .jar file. You will need to load this .jar file into your classpath.Loading the jar file into your classpath is as simple as copying it to the folder where your classpath is pointing to. You can also add them to your project. So in short you wont be able to install it like a windows library. Without a little more detail I cant really provide a answer. You should post some of the error messages you are getting and which IDE you are using.