Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaMail连接问题_Java_Email_Jakarta Mail_Exchange Server_Permission Denied - Fatal编程技术网

JavaMail连接问题

JavaMail连接问题,java,email,jakarta-mail,exchange-server,permission-denied,Java,Email,Jakarta Mail,Exchange Server,Permission Denied,我正在尝试测试一个简单的程序,该程序可以在线使用JavaMail发送电子邮件。我正在尝试使用工作电子邮件,但出现错误“无法连接到SMTP主机:…”和“权限被拒绝:连接”。我浏览了关于这个问题的其他帖子,包括: 我想我已经解决了这些帖子的解决方案中提到的问题,基本上是IPv4问题和身份验证。我对尝试使用JavaMail还不熟悉,所以我想知道我是否犯了一些其他初学者的错误。还有其他我忽略的东西吗?我是否可能无法以这种方式访问服务器?我使用的是通用名称,而不是公司的实际名称 代码如下: publ

我正在尝试测试一个简单的程序,该程序可以在线使用JavaMail发送电子邮件。我正在尝试使用工作电子邮件,但出现错误“无法连接到SMTP主机:…”和“权限被拒绝:连接”。我浏览了关于这个问题的其他帖子,包括:

我想我已经解决了这些帖子的解决方案中提到的问题,基本上是IPv4问题和身份验证。我对尝试使用JavaMail还不熟悉,所以我想知道我是否犯了一些其他初学者的错误。还有其他我忽略的东西吗?我是否可能无法以这种方式访问服务器?我使用的是通用名称,而不是公司的实际名称

代码如下:

public static void main(String[] args) 
{   
    System.setProperty("java.net.preferIPv4Stack" , "true");
    String host="mail.company.com";   
    final String user="user@company.com";//change accordingly   
    final String password="XXXXXXXX";//change accordingly   

    String to="user@company.com";//change accordingly   

    //Get the session object   
    Properties props = new Properties();   
    props.put("mail.smtp.host",host);   
    props.put("mail.smtp.auth", "true");   

    Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() 
    {   
        protected PasswordAuthentication getPasswordAuthentication() 
        {   
            return new PasswordAuthentication(user,password);   
        }   
    });   

    //Compose the message   
    try 
    {   
        MimeMessage message = new MimeMessage(session);   
        message.setFrom(new InternetAddress(user));   
        message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));   
        message.setSubject("javatpoint");   
        message.setText("This is simple program of sending email using JavaMail API");   

        //send the message   
        Transport.send(message);   

        System.out.println("message sent successfully...");   

    } 
    catch (MessagingException e) 
    {
        e.printStackTrace();
    }
}
堆栈跟踪:

javax.mail.MessagingException: Could not connect to SMTP host: mail.company.com, port: 25;
nested exception is:
java.net.SocketException: Permission denied: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1706)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:525)
at javax.mail.Service.connect(Service.java:313)
at javax.mail.Service.connect(Service.java:172)
at javax.mail.Service.connect(Service.java:121)
at javax.mail.Transport.send0(Transport.java:190)
at javax.mail.Transport.send(Transport.java:120)
at mailtesting.SendMailBySite.main(SendMailBySite.java:45)

Caused by: java.net.SocketException: Permission denied: connect
at java.net.TwoStacksPlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:284)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:227)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1672)
... 7 more
这意味着您已连接到服务器和端口,并且服务器主动拒绝您的连接

如果您尝试将
telnet
发送到此服务器和端口,您可能会收到一条更具描述性的消息,无论哪种方式,该端口都无法工作

端口
25
很可能被阻止作为安全措施,这是大多数公司的标准设置

由于您使用的Outlook在设置中找不到端口,因此我假设您正在连接到Exchange服务器,如果您的整个公司都是Microsoft Outlook商店,则可能根本没有启用
SMTP

您需要联系您的系统管理员团队,了解您实际应该使用的端口和协议。 这意味着您已连接到服务器和端口,并且服务器主动拒绝您的连接

如果您尝试将
telnet
发送到此服务器和端口,您可能会收到一条更具描述性的消息,无论哪种方式,该端口都无法工作

端口
25
很可能被阻止作为安全措施,这是大多数公司的标准设置

由于您使用的Outlook在设置中找不到端口,因此我假设您正在连接到Exchange服务器,如果您的整个公司都是Microsoft Outlook商店,则可能根本没有启用
SMTP


您需要联系您的系统管理员团队,以了解您实际应该使用的端口和协议。我尝试在DOS提示符下ping mail.company.com命令,看起来电子邮件服务已启动并正在运行。查看消息时,您未提供正确的身份验证,因此不允许您连接。您是否尝试打开会话调试?这应该会提供一些额外的信息。确切的错误是什么?请提供完整的堆栈跟踪。如果您仍然收到SocketException,我猜目标邮件服务器不允许在端口25(未加密SMTP的默认端口)上进行连接。现代服务器加密电子邮件传输。尝试添加
props.put(“mail.smtp.port”,“587”)
props.put(“mail.smtp.starttls.enable”,“true”)。询问系统管理员可能是个不错的选择,是的。如果您将该服务器用于自己的电子邮件,您可能可以在自己邮件客户端的帐户设置(Thunderbird、Outlook等)中找到该端口。我尝试在DOS提示符下ping mail.company.com命令,看起来电子邮件服务已启动并运行。查看消息时,您未提供正确的身份验证,因此不允许您连接。您是否尝试打开会话调试?这应该会提供一些额外的信息。确切的错误是什么?请提供完整的堆栈跟踪。如果您仍然收到SocketException,我猜目标邮件服务器不允许在端口25(未加密SMTP的默认端口)上进行连接。现代服务器加密电子邮件传输。尝试添加
props.put(“mail.smtp.port”,“587”)
props.put(“mail.smtp.starttls.enable”,“true”)。询问系统管理员可能是个不错的选择,是的。如果您将该服务器用于自己的电子邮件,则可以在您自己的邮件客户端的帐户设置(Thunderbird、Outlook等)中找到该端口。已保存“我的日常助手”。谢谢,救了我的命。谢谢
java.net.SocketException: Permission denied: connect