[英]Receiving mail using javamail API
i am using javamail api to configure a receiver but its throwing an exception. 我正在使用javamail api配置接收器,但抛出异常。 i don't know how to resolve it.
我不知道如何解决它。 i am just a beginner to javamail.
我只是javamail的初学者。 i am actaully not getting what exactly it wants me to do.
我确实没有得到我想要的确切信息。 please anybody give me the proper solution.
请任何人给我适当的解决方案。 my code is:
我的代码是:
package com.message;
import javax.mail.*;
import java.util.*;
import java.io.*;
public class Receiver
{
public static void main(String[] args)
{
Properties props = new Properties();
String host = "pop3.gmail.com";
String username = "emailid";
String password = "pasword";
String provider = "pop3";
try
{
// Connect to the POP3 server
Session session = Session.getInstance(props);
Store store = session.getStore(provider);
store.connect(host,username, password);
// Open the folder
Folder inbox = store.getFolder("INBOX");
if (inbox == null)
{
System.out.println("No INBOX");
System.exit(1);
}
inbox.open(Folder.READ_ONLY);
// Get the messages from the server
Message[] messages = inbox.getMessages();
for (int i = 0; i < messages.length; i++)
{
System.out.println("Message"+(i+1));
messages[i].writeTo(System.out);
}
// Close the connection
// but don't remove the messages from the server
inbox.close(false);
store.close();
}
catch (MessagingException ex)
{
ex.printStackTrace();
}
catch(IOException ex)
{
ex.printStackTrace();
}
}
}
and the exception is: 唯一的例外是:
javax.mail.MessagingException: Connect failed;
nested exception is:
java.net.UnknownHostException: pop3.gmail.com
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:160)
at javax.mail.Service.connect(Service.java:291)
at javax.mail.Service.connect(Service.java:172)
at com.message.Receiver.main(Receiver.java:20)
Caused by: java.net.UnknownHostException: pop3.gmail.com
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:367)
at java.net.Socket.connect(Socket.java:524)
at java.net.Socket.connect(Socket.java:474)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:267)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:227)
at com.sun.mail.pop3.Protocol.<init>(Protocol.java:91)
at com.sun.mail.pop3.POP3Store.getPort(POP3Store.java:213)
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:156)
... 3 more
anybody please solve this problem. 任何人请解决这个问题。
尝试使用pop.gmail.com
显然是正确的地址。
This: 这个:
java.net.UnknownHostException: pop3.gmail.com
is telling you that your system can't resolve an IP address for pop3.gmail.com
. 告诉您您的系统无法解析
pop3.gmail.com
的IP地址。 See the doc for more information. 有关更多信息,请参见文档 。
Thrown to indicate that the IP address of a host could not be determined.
抛出该信号以指示无法确定主机的IP地址。
Is your DNS set up correctly ? 您的DNS是否设置正确? Can you ping that host ?
你能ping那个主机吗? Is that the correct hostname ?
那是正确的主机名吗?
You have not defined port - for gmail pop3 995 in the main class 您尚未定义端口-主类中为gmail pop3 995
String protocol = "pop3";
String host = "pop.gmail.com";
String port = "995";
setup properties: 设置属性:
private Properties getServerProperties(String protocol, String host, String port) {
Properties properties = new Properties();
// server setting
properties.put(String.format("mail.%s.host", protocol), host);
properties.put(String.format("mail.%s.port", protocol), port);
// SSL setting
properties.setProperty(
String.format("mail.%s.socketFactory.class", protocol),
"javax.net.ssl.SSLSocketFactory");
properties.setProperty(
String.format("mail.%s.socketFactory.fallback", protocol),
"false");
properties.setProperty(
String.format("mail.%s.socketFactory.port", protocol),
String.valueOf(port));
return properties;
}
get emails: 获取电子邮件:
public void downloadEmails(String protocol, String host, String port,
String userName, String password) {
Properties properties = getServerProperties(protocol, host, port);
Session session = Session.getDefaultInstance(properties);
try {
// connects to the message store
Store store = session.getStore(protocol);
store.connect(userName, password);
// opens the inbox folder
Folder folderInbox = store.getFolder("INBOX");
folderInbox.open(Folder.READ_ONLY);
// fetches new messages from server
Message[] messages = folderInbox.getMessages();
for (int i = 0; i < messages.length; i++) {
Message msg = messages[i];
Address[] fromAddress = msg.getFrom();
String from = fromAddress[0].toString();
String subject = msg.getSubject();
String toList = parseAddresses(msg
.getRecipients(RecipientType.TO));
String ccList = parseAddresses(msg
.getRecipients(RecipientType.CC));
String sentDate = msg.getSentDate().toString();
String contentType = msg.getContentType();
String messageContent = "";
if (contentType.contains("text/plain")
|| contentType.contains("text/html")) {
try {
Object content = msg.getContent();
if (content != null) {
messageContent = content.toString();
}
} catch (Exception ex) {
messageContent = "[Error downloading content]";
ex.printStackTrace();
}
}
// print out details of each message
System.out.println("Message #" + (i + 1) + ":");
System.out.println("\t From: " + from);
System.out.println("\t To: " + toList);
System.out.println("\t CC: " + ccList);
System.out.println("\t Subject: " + subject);
System.out.println("\t Sent Date: " + sentDate);
System.out.println("\t Message: " + messageContent);
}
// disconnect
folderInbox.close(false);
store.close();
} catch (NoSuchProviderException ex) {
System.out.println("No provider for protocol: " + protocol);
ex.printStackTrace();
} catch (MessagingException ex) {
System.out.println("Could not connect to the message store");
ex.printStackTrace();
}
}
finally: 最后:
public static void main(String[] args) {
// for POP3
String protocol = "pop3";
String host = "pop.gmail.com";
String port = "995";
String userName = "your_email_address";
String password = "your_email_password";
EmailReceiver receiver = new EmailReceiver();
receiver.downloadEmails(protocol, host, port, userName, password);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.