2
  1. 我在下面粘贴了我的代码,但我不知道为什么我的代码在 Transport.connect 之外无法工作,2.只是为了检查我添加了第 1 步、第 2 步、第 3 步的流程。在输出中我一直到第 2 步。除此之外没有回应。

     import javax.mail.*;
     import javax.mail.internet.*;
     import java.util.*;
    
     public class SendFromGmail {
      public static void main(String args[]){
         try{
        String host = "smtp.gmail.com";
        String from = "rageshcv@gmail.com";
        String pass = "mypassword";
        Properties props = System.getProperties();
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.user", from);
        props.put("mail.smtp.password", pass);
        props.put("mail.smtp.port", "587");
        props.put("mail.smtp.auth", "true");
        System.out.println("step 1");
        String[] to = {"rageshcv@outlook.com"};
    
        Session session = Session.getDefaultInstance(props, null);
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        InternetAddress[] toAddress = new InternetAddress[to.length];
    
    
        for( int i=0; i < to.length; i++ ) { 
            toAddress[i] = new InternetAddress(to[i]);
        }
        System.out.println(Message.RecipientType.TO);
    
        for( int i=0; i < toAddress.length; i++) {
            message.addRecipient(Message.RecipientType.TO, toAddress[i]);
        }
        message.setSubject("sending in a group");
        message.setText("Welcome to JavaMail");
        Transport transport = session.getTransport("smtp");
        System.out.println("Step 2");
        transport.connect(host, from, pass);
        System.out.println("Step 3");
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
     }
    catch(Exception e){
        e.getMessage();
       }
       }
       }
    
4

1 回答 1

-1

JavaMail FAQ 有调试连接问题的技巧,你试过了吗?

来自链接源的引用文本:

问:如何调试连接到我的邮件服务器的问题?

A:调试此类问题时首先要做的是确定是Java问题还是网络问题。使用 telnet 尝试连接到远程系统。例如,如果您无法连接到名为 的 POP3 服务器mail.example.com,您可以使用:

telnet mail.example.com 110

如果您尝试连接到 SMTP 服务器,请使用 25 而不是 110 作为端口号。如果您尝试连接到 IMAP 服务器,请使用 143 作为端口号。

如果您收到问候横幅,您可以简单地断开连接。如果这可行,那么您的网络、名称服务、防火墙等都已正确设置,您的问题很可能出在您的 Java 程序中。

如果它不起作用,您需要检查您的网络配置或向您的网络管理员寻求帮助。有时,安装在本地计算机或网络上的防火墙会阻止您连接到服务器。如果 telnet 抱怨它不知道您正在使用的主机名,很可能您的名称服务(例如 DNS)没有正确配置为解析 Internet 主机名。这些问题都不是 JavaMail 或 Java 问题。

通常,当您在连接时收到低级别的 SocketException 时,问题是由于您的网络配置造成的。通常这不是 Java 问题。

如果您已经成功连接到 telnet,接下来要做的就是打开 Session 调试,并在 JavaMail 尝试连接到远程机器时获取协议跟踪,如上所述。这通常会包括来自服务器的更详细的错误消息,这些消息将指示问​​题的真正根源。

于 2013-09-12T17:53:48.457 回答