我在下面粘贴了我的代码,但我不知道为什么我的代码在 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(); } } }
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 尝试连接到远程机器时获取协议跟踪,如上所述。这通常会包括来自服务器的更详细的错误消息,这些消息将指示问题的真正根源。