Smtp 如何从没有internet连接且使用web服务器的服务器发送来自Java mail API的邮件?
我正在使用JAVA邮件API发送邮件并使用SMTP。当我将代码放入测试服务器时,它正在成功地发送邮件,因为它正在连接internet。但在制作过程中没有互联网连接。是否可以使用web服务器发送邮件?我用来发送邮件的代码如下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.
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服务器不是邮件服务器。