Java收发邮件过程中具体的功能是怎么实现的

Java收发邮件过程中具体的功能是怎么实现的,第1张

1SMTP协议

用户连上邮件服务器后,要想给它发送一封电子邮件,需要遵循一定的通迅规则,SMTP协议就是用于定义这种通讯规则的。

因而,通常我们也把处理用户smtp请求(邮件发送请求)的邮件服务器称之为SMTP服务器。(25)

2POP3协议

同样,用户若想从邮件服务器管理的电子邮箱中接收一封电子邮件的话,他连上邮件服务器后,也需要遵循一定的通迅格式,POP3协议用于定义这种通讯格式。

因而,通常我们也把处理用户pop3请求(邮件接收请求)的邮件服务器称之为POP3服务器。(110)

下图用于演示两帐户相互发送邮件的过程

31JavaMail API按其功能划分通常可分为如下三大类:

创建和解析邮件内容的API :Message类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。

32发送邮件的API:Transport类是发送邮件的核心API类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,例如SMTP协议。

接收邮件的API:Store类是接收邮件的核心API类,它的实例对象代表实现了某个邮件接收协议的邮件接收对象,例如POP3协议。

33Session类

Session类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等。Session对象根据这些信息构建用于邮件收发的Transport和Store对象,以及为客户端创建Message对象时提供信息支持。

4邮件组织结构相关的API

MimeMessage类表示整封邮件。

MimeBodyPart类表示邮件的一个MIME消息。

MimeMultipart类表示一个由多个MIME消息组合成的组合MIME消息。

5具体的例子程序

package cnedudlmusend;

import javautilProperties;

import javaxactivationDataHandler;

import javaxactivationFileDataSource;

import javaxmailMessage;

import javaxmailSession;

import javaxmailTransport;

import javaxmailinternetInternetAddress;

import javaxmailinternetMimeBodyPart;

import javaxmailinternetMimeMessage;

import javaxmailinternetMimeMultipart;

import javaxmailinternetMimeUtility;

public class SendMail {

public static void main(String[] args) throws Exception {

Properties prop = new Properties();

//连接的邮件服务器的主机名

propsetProperty("mailsmtphost", "smtpsinacomcn");

//发送邮件的协议

propsetProperty("mailtransportprotocol", "smtp");

//是否向邮件服务器提交认证

propsetProperty("mailsmtpauth", "true");

//创建session

Session session = SessiongetInstance(prop);

sessionsetDebug(true);

//得到transport

Transport ts = sessiongetTransport();

//连接邮件服务器

tsconnect("smtpsinacomcn", "xxxx@sinacom", "xxxxx");

//发送邮件

MimeMessage message = createMessage(session);

tssendMessage(message, messagegetAllRecipients());

tsclose();

}

public static MimeMessage createMessage(Session session) throws Exception {

MimeMessage message = new MimeMessage(session);

//设置邮件的基本信息

messagesetFrom(new InternetAddress("xxxx@sinacom"));

messagesetRecipient(MessageRecipientTypeTO, new InternetAddress("1219070362@qqcom"));

messagesetSubject("test");

//正文

MimeBodyPart text = new MimeBodyPart();

//设置charaset可以解决中文正文的乱码问题,内嵌可下载的

textsetContent("你好xxx,<img src='c:/dogjpg' />测试成功!<br/><img src='cid:aaajpg' />", "text/html;charset=gbk");

//1

MimeBodyPart image = new MimeBodyPart();

imagesetDataHandler(new DataHandler(new FileDataSource("src/88jpg")));

imagesetContentID("aaajpg");

//附件

MimeBodyPart attach = new MimeBodyPart();

DataHandler dh = new DataHandler(new FileDataSource("src/javamail架包jar"));

attachsetDataHandler(dh);

//解决文件中文乱码问题

attachsetFileName(MimeUtilityencodeText(dhgetName()));

//描述正文和的关系

MimeMultipart mp = new MimeMultipart();

mpaddBodyPart(text);

mpaddBodyPart(image);

mpsetSubType("related");

//描述正文和附件

MimeMultipart mp2 = new MimeMultipart();

mp2addBodyPart(attach);

//将正文封装为一个body

MimeBodyPart content = new MimeBodyPart();

contentsetContent(mp);

mp2addBodyPart(content);

mp2setSubType("mixed");

messagesetContent(mp2);

messagesaveChanges();

return message;

}

}

package comibmcncommonemail;

import orgapachecommonsmailEmail;

import orgapachecommonsmailEmailException;

import orgapachecommonsmailSimpleEmail;

public class SimpleEmailClient {

public static void main(String[] args) {

Email email = new SimpleEmail();

emailsetSSLOnConnect(true);

try {

emailsetHostName("smtp163com");//设置邮件的服务器地址

emailsetSmtpPort(25);//邮件的端口,如果是SSL连接,端口为

emailsetAuthentication("username", "password");// your mail's address and password

emailsetFrom("your mail address");

emailsetSubject("TestMail");

emailsetMsg("This is a test mail :-)");

emailaddTo("destination mail address");

String result = emailsend();

Systemoutprintln("Send mail status:" + result);

} catch (EmailException e) {

eprintStackTrace();

}

}

}

以上就是关于Java收发邮件过程中具体的功能是怎么实现的全部的内容,包括:Java收发邮件过程中具体的功能是怎么实现的、java 中 Commons Email 这个包如何去收取绑定邮箱的邮件、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9626921.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存