我正在使用JAVA邮件API发送邮件和使用SMTP。当我将代码放入测试服务器时,它正在成功发送邮件,因为它具有互联网连接。但在制作中没有互联网连接。是否可以使用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
答案 0 :(得分:0)
如果您有SOCKS代理服务器,请参阅this JavaMail FAQ entry。
如果您只有一个Web代理服务器,则可能需要corkscrew。
答案 1 :(得分:0)
我正在使用我的网络服务器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服务器中被阻止了吗?或者代码中有问题...... !!