我無法使用Java郵件API從我的yahoo id發送電子郵件。我嘗試了Google的不同選項,但失敗。請看看我的下面的代碼,讓我知道如果我失去了一些東西。在我看來雅虎不提供免費服務發送郵件,但我不確定。請提供你的想法。使用Javamail API將yahoo id的郵件發送到其他電子郵件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 = "[email protected]";
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("[email protected]"));
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
我怎樣才能解決這個問題?
謝謝拉胡爾,它工作正常。 – user1182217 2012-07-06 07:10:39
你好Rahul,早上它工作正常,但現在它給了我以下錯誤:任何想法,爲什麼這會來,請讓我知道。 'DEBUG SMTP:嘗試連接到主機「smtp.mail.yahoo.com」,端口587,isSSL錯誤 javax.mail.MessagingException:無法連接到SMTP主機:smtp.mail.yahoo.com,端口:587; ' – user1182217 2012-07-06 13:55:32
除了端口號(不是587)而是465之外,上面的所有內容都是正確的。希望這有助於。 – Intotito 2014-04-03 21:07:34