「java收取邮件」java读取邮件内容
今天给各位分享java收取邮件的知识,其中也会对java读取邮件内容进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java怎么连接exchange收发邮件
- 2、用java写一个邮件收发的程序需要用到哪些类
- 3、java实现接收邮件,mail.jar
- 4、Java收发邮件过程中具体的功能是怎么实现的
- 5、java接收邮件问题
- 6、用java写收发邮件的程序,求助,在线
java怎么连接exchange收发邮件
/**
serverName 接收邮件地址
user 用户信息
pwd 密码
path 邮件临时储存路径
max 每次接收邮件的最大数量
**/
public int receive(String serverName, String user, String pwd, String path, int max) throws Exception {
//新建ExchangeVersion.Exchange2007_SP1版本的Exchange服务
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
String[] userInfo = user.split("/");
//用户认证信息
ExchangeCredentials credentials = new WebCredentials(userInfo[1], pwd,userInfo[0]);
service.setCredentials(credentials);
//设置Exchange连接的服务器地址
service.setUrl(new URI(serverName));
//绑定邮箱
Folder inbox = Folder.bind(service, WellKnownFolderName.Inbox);
//获取邮箱文件数量
int count = inbox.getTotalCount();
if(max 0) count = count max ? max : count;
//循环获取邮箱邮件
ItemView view = new ItemView(count);
FindItemsResultsItem findResults = service.findItems(inbox.getId(), view);
for (Item item : findResults.getItems()) {
EmailMessage message = EmailMessage.bind(service, item.getId());
ListAttachment attachs = message.getAttachments().getItems();
try{
if(message.getHasAttachments()){
for(Attachment f : attachs){
if(f instanceof FileAttachment){
//接收邮件到临时目录
File tempZip = new File(path,f.getName());
((FileAttachment)f).load(tempZip.getPath());
}
}
//删除邮件
message.delete(DeleteMode.HardDelete);
}
}catch(Exception err){
log.equals(err);
}
}
return count;
}
用java写一个邮件收发的程序需要用到哪些类
用mail.jar包
import java.util.Date;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
java实现接收邮件,mail.jar
这个异常表示有类型转换错误,有个地方需要使用 javax.mail.Multipart 类型的对象,你用了 com.sun.mail.imap.IMAPInputStream 类型,所以出现了这个异常。
根据你给的有限的资料,暂时只能分析道这么多了。
Java收发邮件过程中具体的功能是怎么实现的
1.SMTP协议
用户连上邮件服务器后,要想给它发送一封电子邮件,需要遵循一定的通迅规则,SMTP协议就是用于定义这种通讯规则的。
因而,通常我们也把处理用户smtp请求(邮件发送请求)的邮件服务器称之为SMTP服务器。(25)
2.POP3协议
同样,用户若想从邮件服务器管理的电子邮箱中接收一封电子邮件的话,他连上邮件服务器后,也需要遵循一定的通迅格式,POP3协议用于定义这种通讯格式。
因而,通常我们也把处理用户pop3请求(邮件接收请求)的邮件服务器称之为POP3服务器。(110)
下图用于演示两帐户相互发送邮件的过程
3.1JavaMail API按其功能划分通常可分为如下三大类:
创建和解析邮件内容的API :Message类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。
3.2发送邮件的API:Transport类是发送邮件的核心API类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,例如SMTP协议。
接收邮件的API:Store类是接收邮件的核心API类,它的实例对象代表实现了某个邮件接收协议的邮件接收对象,例如POP3协议。
3.3Session类
Session类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等。Session对象根据这些信息构建用于邮件收发的Transport和Store对象,以及为客户端创建Message对象时提供信息支持。
4.邮件组织结构相关的API
MimeMessage类表示整封邮件。
MimeBodyPart类表示邮件的一个MIME消息。
MimeMultipart类表示一个由多个MIME消息组合成的组合MIME消息。
5.具体的例子程序
package cn.edu.dlmu.send;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
public class SendMail {
public static void main(String[] args) throws Exception {
Properties prop = new Properties();
//连接的邮件服务器的主机名
prop.setProperty("mail.smtp.host", "smtp.sina.com.cn");
//发送邮件的协议
prop.setProperty("mail.transport.protocol", "smtp");
//是否向邮件服务器提交认证
prop.setProperty("mail.smtp.auth", "true");
//创建session
Session session = Session.getInstance(prop);
session.setDebug(true);
//得到transport
Transport ts = session.getTransport();
//连接邮件服务器
ts.connect("smtp.sina.com.cn", "xxxx@sina.com", "xxxxx");
//发送邮件
MimeMessage message = createMessage(session);
ts.sendMessage(message, message.getAllRecipients());
ts.close();
}
public static MimeMessage createMessage(Session session) throws Exception {
MimeMessage message = new MimeMessage(session);
//设置邮件的基本信息
message.setFrom(new InternetAddress("xxxx@sina.com"));
message.setRecipient(Message.RecipientType.TO, new InternetAddress("1219070362@qq.com"));
message.setSubject("test");
//正文
MimeBodyPart text = new MimeBodyPart();
//设置charaset可以解决中文正文的乱码问题,内嵌可下载的图片
text.setContent("你好xxx,img src='c:/dog.jpg' /测试成功!br/img src='cid:aaa.jpg' /", "text/html;charset=gbk");
//图片1
MimeBodyPart image = new MimeBodyPart();
image.setDataHandler(new DataHandler(new FileDataSource("src/88.jpg")));
image.setContentID("aaa.jpg");
//附件
MimeBodyPart attach = new MimeBodyPart();
DataHandler dh = new DataHandler(new FileDataSource("src/javamail架包.jar"));
attach.setDataHandler(dh);
//解决文件中文乱码问题
attach.setFileName(MimeUtility.encodeText(dh.getName()));
//描述正文和图片的关系
MimeMultipart mp = new MimeMultipart();
mp.addBodyPart(text);
mp.addBodyPart(image);
mp.setSubType("related");
//描述正文和附件
MimeMultipart mp2 = new MimeMultipart();
mp2.addBodyPart(attach);
//将正文封装为一个body
MimeBodyPart content = new MimeBodyPart();
content.setContent(mp);
mp2.addBodyPart(content);
mp2.setSubType("mixed");
message.setContent(mp2);
message.saveChanges();
return message;
}
}
java接收邮件问题
不清楚你要的是做服务器还是要做客户端
这个是客户端,采用socket接收邮件
class POP3Demo {
private static String POP3Server = "pop3服务器";
private static String USERNAME = "****";//实际应用中改成真实的用户名
private static String PASSWORD = "****";//实际应用中改成真实的密码
public static void main(String[] args) {
int POP3Port = 110;
Socket client = null;
try {
// 向POP3服务程序建立一个套接字连接。
client = new Socket(POP3Demo.POP3Server, POP3Port);
// 创建一个BufferedReader对象,以便从套接字读取输出。
InputStream is = client.getInputStream();
BufferedReader sockin = new BufferedReader(new InputStreamReader(is));
// 创建一个PrintWriter对象,以便向套接字写入内容。
OutputStream os = client.getOutputStream();
PrintWriter sockout = new PrintWriter(os, true);
// 显示同SMTP服务程序的握手过程。
System.out.println("S:" + sockin.readLine());
sockout.println("user " + POP3Demo.USERNAME);
System.out.println("S:" + sockin.readLine());
sockout.println("pass " + POP3Demo.PASSWORD);
System.out.println("S:" + sockin.readLine());
sockout.println("stat");
String temp[] = sockin.readLine().split(" ");
int count = Integer.parseInt(temp[1]);//得到信箱中共有多少封邮件
for (int i = 1; i count + 1; i++) {//依次打印出邮件的内容
sockout.println("retr " + i);
System.out.println("以下为第" + i + "封邮件的内容");
while (true) {
String reply = sockin.readLine();
System.out.println(reply);
if (reply.toLowerCase().equals(".")) {
break;
}
}
}
} catch (IOException e) {
System.out.println(e.toString());
} finally {
try {
if (client != null) {
client.close();
}
} catch (IOException e) {}
}
}
}
用java写收发邮件的程序,求助,在线
import java.util.Properties;
import java.util.Date;
import javax.mail.Session;
import javax.mail.Message;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;
public class HelloWorldJavaMail {
public static void main(String[] args) {
try {
Properties props = System.getProperties();
props.put("mail.smtp.host","xxx.xxx.xxx.xxx");
Session session=Session.getDefaultInstance(props,null);
MimeMessage mimeMessage=new MimeMessage(session);
mimeMessage.setFrom(new InternetAddress("xx@xx.xx","姓名","gb2312"));
mimeMessage.setRecipients(Message.RecipientType.TO,"xx@xx.xx");
mimeMessage.setSubject("Hello World JavaMail","gb2312");
mimeMessage.setText("h1Hello World JavaMail/h1","gb2312");
mimeMessage.setHeader("Content-Type","text/html");
mimeMessage.setSentDate(new Date());
Transport.send(mimeMessage);
} catch (Exception e) {
e.printStackTrace();
}
}
}
2。收信
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
public class HelloWorldPOP {
public static void main(String args[]) {
try {
String host="xxx.xxx.xxx.xxx";
String user="xxxxxx";
String password="xxxxxx";
Session session = Session.getDefaultInstance(System.getProperties(), null);
Store store = session.getStore("pop3");
store.connect(host, -1, user, password);
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
int totalMessages = folder.getMessageCount();
if (totalMessages == 0) {
System.out.println("没有邮件");
folder.close(false);
store.close();
return;
}
Message[] messages = folder.getMessages();
for (int i = 0; i messages.length; i++) {
showMessage(messages[i]);
}
folder.close(false);
store.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void showMessage(Message m) throws Exception {
Address[] a;
if ((a = m.getFrom())!=null) {
for (int j = 0; j a.length; j++) {
System.out.println("送信人: " + MimeUtility.decodeText(a[j].toString()));
}
}
if ((a = m.getRecipients(Message.RecipientType.TO))!=null) {
for (int j = 0; j a.length; j++) {
System.out.println("收信人: " + MimeUtility.decodeText(a[j].toString()));
}
}
System.out.println("主体: " + m.getSubject());
Date d = m.getSentDate();
System.out.println("日期: " + (d!= null ? d.toString() : "不明"));
System.out.println("大小: " + m.getSize());
System.out.println("内容:\n" + m.getContent());
}
}
用JAVAMAIL很容易实现的。
参照:
关于java收取邮件和java读取邮件内容的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-28,除非注明,否则均为
原创文章,转载请注明出处。