SMTP-клиент Java-программа - PullRequest
1 голос
/ 29 марта 2012

Я совершенно новичок в Java Mail. Сначала я хотел выполнить программу (которая была у меня через старших) и посмотреть, все ли работает нормально. Поэтому, когда я компилирую этот код, я получаю ошибки, когда все классы и пакеты почты Java не найдены.
Может кто-нибудь перечислить, что мне нужно, чтобы моя программа компилировалась и выполнялась без каких-либо проблем. Я скачал "JAva Mail 1.4.5", но в нем не было установочного файла?
У меня JAva 1.6 и Windows XP
Пожалуйста, помогите ........
Ошибки:
C:>javac SMTPClient.java SMTPClient.java:2: package javax.mail does not exist import javax.mail.<em>; ^ SMTPClient.java:3: package javax.mail.internet does not exist import javax.mail.internet.</em>; ^ 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));</p> <pre><code> ^

SMTPClient.java: 28: не удается найти символ символ: класс интернет-адрес расположение: класс SMTPClient message.addRecipient (Message.RecipientType.TO, новый InternetAddress (to));

                                                       ^

SMTPClient.java: 40: не удается найти символ символ: класс Транспорт расположение: класс SMTPClient Transport t = session.getTransport ("smtps"); ^ 10 ошибок

C:>

Ответы [ 2 ]

6 голосов
/ 29 марта 2012

Загрузите java mail.jar и security.jar

1. Скопируйте приведенный ниже код в блокнот и сохраните как EmailAgent.java (измените адреса электронной почты и пароль соответственно)

</p>

<code> 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);
   }
  }
</code>
  1. Перейти к запуску, введите cmd и нажмите Enter

  2. Перейдите к пути, в котором сохранен файл EmailAgent.java.

  3. Скопируйте ваши mail.jar и security.jar в тот же каталог, где сохранен EmailAgent.java

  4. скомпилировать Java-файл

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

  5. Запуск скомпилированного Java-класса

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

И проверьте ваш почтовый ящик на адрес электронной почты. Бинго:)

1 голос
/ 29 марта 2012

Если Java жалуется на то, что не находит пакеты, у вас, вероятно, нет этих конкретных пакетов в вашем classpath.

Библиотеки Java обычно находятся в файле .jar. Вам нужно будет загрузить этот файл .jar в ваш classpath. Загрузите файл jar в ваш classpath так же просто, как скопировать его в папку, на которую указывает ваш classpath. Вы также можете добавить их в свой проект. Короче говоря, вы не сможете установить его как библиотеку Windows. Без более подробной информации я не могу дать ответ. Вам следует опубликовать некоторые сообщения об ошибках, которые вы получаете, и какую IDE вы используете.

...