Smtp 如何从没有internet连接且使用web服务器的服务器发送来自Java mail API的邮件?

Smtp 如何从没有internet连接且使用web服务器的服务器发送来自Java mail API的邮件?,smtp,jakarta-mail,Smtp,Jakarta Mail,我正在使用JAVA邮件API发送邮件并使用SMTP。当我将代码放入测试服务器时,它正在成功地发送邮件,因为它正在连接internet。但在制作过程中没有互联网连接。是否可以使用web服务器发送邮件?我用来发送邮件的代码如下 final String username = "momkutty@gmail.com"; final String password = "password"; Properties props = new Properties(); System.

我正在使用JAVA邮件API发送邮件并使用SMTP。当我将代码放入测试服务器时,它正在成功地发送邮件,因为它正在连接internet。但在制作过程中没有互联网连接。是否可以使用web服务器发送邮件?我用来发送邮件的代码如下

final String username = "momkutty@gmail.com";
    final String password = "password";
    Properties props = new Properties();
    System.out.println("Setting properties");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", "smtp.google.com");
    props.put("mail.smtp.port", "25");
    System.out.println("Properties set successfully");
    Session session = Session.getInstance(props,
    new javax.mail.Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
    return new PasswordAuthentication(username, password);
    }
    });
    try {
    System.out.println("Setting message properties");
    Message message = new MimeMessage(session);
    message.setFrom(new InternetAddress("momkutty@gmail.com"));
    message.setRecipients(Message.RecipientType.TO,InternetAddress.parse("sumankalyan.roy@cmcltd.com"));
    message.setSubject("Test Subject");
    message.setText("Hey!!!! This is a TEST mail using SMTP SMTP port no.25.....");
    System.out.println("Going to send mail...");
    Transport.send(message);
    System.out.println("Mail has been Sent");
    } catch (MessagingException e) {
    e.printStackTrace();
    }
    }e

如果您有SOCKS代理服务器,请参阅


如果您只有一个web代理服务器,您可能需要这样的东西。

我正在使用我的web服务器IP作为socksProxyHost,使用1080作为socksProxyPort。。。!!请参阅以下几行

props.setProperty("proxySet","true");
props.setProperty("socksProxyHost","10.10.30.146");
props.setProperty("socksProxyPort","1080");
并试图通过587号端口发送邮件

props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "smtp.office365.com");
props.put("mail.smtp.port", "587");
但是上面说

javax.mail.MessagingException: Could not connect to SMTP host: smtp.office365.com, port: 587;
nested exception is:
    java.net.ConnectException: Connection timed out
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1972)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)
    at javax.mail.Service.connect(Service.java:317)
    at javax.mail.Service.connect(Service.java:176)
    at javax.mail.Service.connect(Service.java:125)
    at javax.mail.Transport.send0(Transport.java:194)
    at javax.mail.Transport.send(Transport.java:124)
    at com.cmcltd.vtms.sms.smsalert.SmsEmailAlerts.testMail(SmsEmailAlerts.java:1029)
    at com.cmcltd.vtms.sms.smsalert.ScheduleJob.execute(ScheduleJob.java:25)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:534)
Caused by: java.net.ConnectException: Connection timed out
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at java.net.Socket.connect(Socket.java:528)
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:319)
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:233)
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1938)
    ... 10 more

是因为587端口在web服务器中被阻塞吗?或者代码中有错误

我不懂制作,没有网络连接。所以你的服务器只为你的局域网服务,对吗?你需要在你的局域网中有一个可以访问互联网的邮件服务器。我不认为这是一个java问题。这更像是一个基础设施问题。而且,不,web服务器不是邮件服务器。