「java接受邮件」javamail收邮件
今天给各位分享java接受邮件的知识,其中也会对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怎么连接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接受邮件的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于javamail收邮件、java接受邮件的信息别忘了在本站进行查找喔。
发布于:2022-11-28,除非注明,否则均为
原创文章,转载请注明出处。