「java邮件收取」java邮件接收

博主:adminadmin 2022-12-20 06:39:07 88

本篇文章给大家谈谈java邮件收取,以及java邮件接收对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用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收发邮件过程中具体的功能是怎么实现的

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实现接收邮件,mail.jar

这个异常表示有类型转换错误,有个地方需要使用 javax.mail.Multipart 类型的对象,你用了 com.sun.mail.imap.IMAPInputStream 类型,所以出现了这个异常。

根据你给的有限的资料,暂时只能分析道这么多了。

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邮件收取的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java邮件接收、java邮件收取的信息别忘了在本站进行查找喔。

The End

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