一、邮件服务器功能
(1)接收用户投递的邮件;
(2)将用户投递进来的邮件转发给目标邮件服务器;
(3)接收其他邮件服务器转发来的邮件并把邮件存储到其管理的用户邮箱中;
(4)为前来读取邮件的用户提供读取服务。
二、 电子邮箱
每个电子邮件服务器之上都可以开设多个电子邮箱,电子邮箱也称之为E-mail地址。
三、邮件客户端软件
邮件客户端软件负责与邮件服务器通讯,主要用于帮助用户将邮件发送给SMTP服务器和从POP3/IMAP邮件服务器读取用户的电子邮件。
四、邮件发送原理
例如:a@sohu给b@sina发邮件
原理如下:a先找自己的邮件发送服务器(smtp服务器),然后sohu服务器发现了收件地址为b@sina.com,收件人是sina,服务器转交给sina的smtp服务器,然后sina的smtp将邮件放到b用户的空间中,b则连上sina的接收邮件服务器,按照pop3协议接收邮件。
注:如果是sohu的用户,直接放到sohu给那个用户的空间中,
五、JavaMail API按其功能划分通常可分为如下三大类:
l 创建和解析邮件内容的API :Message类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。
l 发送邮件的API:Transport类是发送邮件的核心API类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,例如SMTP协议。
l 接收邮件的API:Store类是接收邮件的核心API类,它的实例对象代表实现了某个邮件接收协议的邮件接收对象,例如POP3协议。
六、发送一封带附件和图片的邮件
1.创建一封带附件和图片的邮件
1)创建一个代表邮件的MimeMessage对象,并设置邮件的基本属性
MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
message.setFrom(new InternetAddress("lei@ ql.com "));
message.setRecipient(Message.RecipientType.TO, new InternetAddress("li@ql.com"));
message.setSubject("test");
2)针对邮件里面的每一部分数据,创建与之的对应MimeBodyPart对象
//生成正文以及正文图片
MimeBodyPart text = new MimeBodyPart();
text.setContent("这是我的邮件内容!!! <br/><img src=cid:2.jpg width=800 height=600>", "text/html;charset=UTF-8");
MimeBodyPart image = new MimeBodyPart();
DataHandler dh1 = new DataHandler(new FileDataSource("c://2.jpg"));
image.setDataHandler(dh1);
image.setContentID(dh1.getName());
//生成附件
MimeBodyPart attachment = new MimeBodyPart();
DataHandler dh2 = new DataHandler(new FileDataSource("c://照片.jpg"));
attachment.setDataHandler(dh2);
attachment.setFileName(MimeUtility.encodeText(dh2.getName()));//处理中文乱码
3)把多个MimeBodyPart加到一个MimeMultipart容器里面去,并通过容器的setSubType方法描述这里面多个bodypart的关系
MimeMultipart content = new MimeMultipart();
content.addBodyPart(text);
content.addBodyPart(image);
content.setSubType("related");
4)把容器放到邮件对象里面去,即完成附件邮件的创建工作
MimeBodyPart bcontent = new MimeBodyPart();
bcontent.setContent(content);
2. 发送邮件
1)定义邮件程序的环境信息
2)使用上面定义的环境信息创建与邮件服务器会话的session
3)使用session创建邮件对象
4)通过session得到邮件发送对象,进而就可以调用邮件发送对象的send方法发送邮件