使用Javamail API将邮件从yahoo id发送到其他电子邮件ID

我无法使用Java mail API从我的yahoo id发送电子邮件。 我尝试了谷歌的不同选项,但都失败了。 请查看下面的代码,如果我遗漏了某些内容,请告诉我。 在我看来, 雅虎没有提供发送邮件的免费服务,但我不确定。 请提供您的想法。

import javax.mail.*; import javax.mail.internet.*; import java.util.Properties; public class MailExample { private static final String SMTP_HOST_NAME = "smtp.mail.yahoo.com"; private static final int SMTP_HOST_PORT = 587;//465,587,25 private static final String SMTP_AUTH_USER = "dummyrls@yahoo.com"; private static final String SMTP_AUTH_PWD = "my password"; public static void main(String[] args) throws Exception{ new MailExample().test(); } public void test() throws Exception{ Properties props = new Properties(); props.put("mail.transport.protocol", "smtp"); props.put("mail.smtp.host", SMTP_HOST_NAME); props.put("mail.smtp.auth", "true"); // props.put("mail.smtps.quitwait", "false"); Session mailSession = Session.getDefaultInstance(props); mailSession.setDebug(true); Transport transport = mailSession.getTransport(); MimeMessage message = new MimeMessage(mailSession); message.setSubject("Testing SMTP-SSL"); message.setContent("This is a test", "text/plain"); message.addRecipient(Message.RecipientType.TO, new InternetAddress("rlss@abc.com")); transport.connect (SMTP_HOST_NAME, SMTP_HOST_PORT, SMTP_AUTH_USER, SMTP_AUTH_PWD); transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO)); transport.close(); } } 

上面的代码适用于Gmail,但对于雅虎,它给出的错误如下:

 DEBUG: setDebug: JavaMail version 1.4.1 DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport, Sun Microsystems, Inc.,1.4.1] DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "smtp.mail.yahoo.com", port 587, isSSL false Exception in thread "main" javax.mail.MessagingException: Could not connect to SMTP host: smtp.mail.yahoo.com, port: 587; nested exception is: java.net.ConnectException: Connection timed out: connect at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1391) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412) at javax.mail.Service.connect(Service.java:288) at com.sample.mailexample.MailExample.test(MailExample.java:313) at com.sample.mailexample.MailExample.main(MailExample.java:291) Caused by: java.net.ConnectException: Connection timed out: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(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:233) at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189) at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1359) ... 4 more 

我怎么解决这个问题?

试试这个代码

 public class SendMail { String host, port, emailid,username, password; Properties props = System.getProperties(); Session l_session = null; public BSendMail() { host = "smtp.mail.yahoo.com"; port = "587"; emailid = "a@yahoo.com"; username = "a"; password = "pwd"; emailSettings(); createSession(); sendMessage("a@yahoo.com", "rahul@gmail.com","Test","test Mail"); } public void emailSettings() { props.put("mail.smtp.host", host); props.put("mail.smtp.auth", "true"); props.put("mail.debug", "false"); props.put("mail.smtp.port", port); // props.put("mail.smtp.socketFactory.port", port); // props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); // props.put("mail.smtp.socketFactory.fallback", "false"); } public void createSession() { l_session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); l_session.setDebug(true); // Enable the debug mode } public boolean sendMessage(String emailFromUser, String toEmail, String subject, String msg) { //System.out.println("Inside sendMessage 2 :: >> "); try { //System.out.println("Sending Message *********************************** "); MimeMessage message = new MimeMessage(l_session); emailid = emailFromUser; //System.out.println("mail id in property ============= >>>>>>>>>>>>>> " + emailid); //message.setFrom(new InternetAddress(emailid)); message.setFrom(new InternetAddress(this.emailid)); message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail)); message.addRecipient(Message.RecipientType.BCC, new InternetAddress(AppConstants.fromEmail)); message.setSubject(subject); message.setContent(msg, "text/html"); //message.setText(msg); Transport.send(message); System.out.println("Message Sent"); } catch (MessagingException mex) { mex.printStackTrace(); } catch (Exception e) { e.printStackTrace(); }//end catch block return true; } } 

使用JavaMail API从Yahoo发送电子邮件的完整代码如下:

 package ripon.java.mail; import java.util.*; import javax.mail.*; import javax.mail.internet.*; public class SendFromYahoo { public static void main(String [] args) { // Sender's email ID needs to be mentioned String from = "test123@yahoo.com"; String pass ="test123"; // Recipient's email ID needs to be mentioned. String to = "riponalwasim@yahoo.com"; String host = "smtp.mail.yahoo.com"; // Get system properties Properties properties = System.getProperties(); // Setup mail server properties.put("mail.smtp.starttls.enable", "true"); properties.put("mail.smtp.host", host); properties.put("mail.smtp.user", from); properties.put("mail.smtp.password", pass); properties.put("mail.smtp.port", "587"); properties.put("mail.smtp.auth", "true"); // Get the default Session object. Session session = Session.getDefaultInstance(properties); try{ // Create a default MimeMessage object. MimeMessage message = new MimeMessage(session); // Set From: header field of the header. message.setFrom(new InternetAddress(from)); // Set To: header field of the header. message.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); // Set Subject: header field message.setSubject("This is the Subject Line!"); // Now set the actual message message.setText("This is actual message"); // Send message Transport transport = session.getTransport("smtp"); transport.connect(host, from, pass); transport.sendMessage(message, message.getAllRecipients()); transport.close(); System.out.println("Sent message successfully...."); }catch (MessagingException mex) { mex.printStackTrace(); } } } 

那么对于nauta来说就是这样

发送邮件(SMTP)服务器Servidor SMTP:smtp.nauta.cu,端口:25,身份validation(SI)

在电子邮件应用中