java - SMTP客户端Java程序

标签 java smtp jakarta-mail

我是 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.*;
^
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

最佳答案

下载java mail.jar和security.jar

1.将下面的代码复制到记事本中,另存为EmailAgent.java(修改邮箱地址和密码)

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. 进入运行,输入cmd并回车

  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

并检查您的 sendTo 电子邮件地址收件箱.. Bingo :)

关于java - SMTP客户端Java程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9926125/

相关文章:

java - 如何使用两个回调来停止 ProgressBar?

java - 将 Objective C 转换为 Java Android 的小问题

java - SeekBar 用于录制 30 秒声音 - handlerReceiveCallback 错误

email - 使用 Telnet 从 gmail 发送电子邮件

java - 用java发送邮件

java - 使用 spring boot 和带有代理的 JavaMailSender 发送邮件

java - 使用 javax 邮件的消息发送时间不正确

java - 具有原始字符串的所有不同字符的最小长度子字符串的滑动窗口解决方案

javascript - 如何使用 ajax 从 IMAP 服务器获取电子邮件

c# - GMAIL SMTP : A call to SSPI failed exception - The function requested is not supported