「java收取邮件」java读取邮件内容

博主:adminadmin 2022-11-28 18:42:09 45

今天给各位分享java收取邮件的知识,其中也会对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读取邮件内容的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-28,除非注明,否则均为首码项目网原创文章,转载请注明出处。