邮件得介绍(邮件原理与JavaMail开发以及Base64Util)

 0hi猿团提供了移动跨平台开发视频,包括html5,apicloud appcan,dcloud,具体请看http://www.9y.cm 

邮件原理与JavaMail开发以及Base64Util


1.SMTP协议
Ehlo 主机名
auth login
mail from
rcpt to
Data   .号代表邮件内容的结束
quit
手工使用SMTP协议发送邮件

2.Tip1: POP3协议

POP3协议
user<SP>username<CRLF>
pass<SP>password<CRLF> 
stat<CRLF>
list<SP>[msg#]<CRLF>
retr<SP>msg#<CRLF>  最重要的一个命令
quit<CRLF>
使用POP3协议手工接收邮件

3.Tip2:RFC822文档

RFC822文档规定了如何编写一封简单邮件
邮件头和邮件体,两者使用空行分隔
邮件头
from字段
to字段
subject字段
cc、bcc字段
邮件体
邮件内容
冒充邮箱,编写欺骗邮件


4.Tip2:MIME协议

MIME协议规定了如何编写一封复杂邮件,MIME协议是对RFC822文档的升级和补充。
对于包含不同类型数据的复杂邮件,MIME协议对不同数据进行分隔,并使用Content-Type头字段描述数据类型、以及不同数据之间的关系。
数据类型
以“主类型/子类型”的形式出现,主类型有text、image、audio、video、application、multipart、message等,分别表示文本、图片、音频、视频、应用程序、组合结构、消息等。每个主类型下面都有多个子类型,例如text主类型包含plain、html、xml、css等子类型。
数据的关系
multipart/mixed、multipart/related、multipart/alternative
MIME协议描述的邮件称之为MIME邮件,MIME协议描述的数据也称之为MIME消息。

5.MIME协议中的其它常见头字段

Content-Disposition头字段Content-Disposition头字段用于指定邮件阅读程序处理数据内容的方式,有inline和attachment两种标准方式,inline表示直接处理,而attachment表示当作附件处理。如果将Content-Disposition设置为attachment,在其后还可以指定filename属性,如下所示:  Content-Disposition: attachment; filename=“1.bmp” 上面的MIME头字段表示MIME消息体的内容为邮件附件,附件名“1.bmp”。

Content-ID头字段 Content-ID头字段用于为“multipart/related”组合消息中的内嵌资源指定一个唯一标识号,在HTML格式的正文中可以使用这个唯一标识号来引用该内嵌资源。例如,假设将一个表示内嵌图片的MIME消息的Content-ID头字段设置为如下形式:  Content-ID: it315logo_gif 那么,在HTML正文中就需要使用如下HTML语句来引用该图片资源:  <img src="cid:it315logo_gif"> 注意,在引用Content-ID头字段标识的内嵌资源时,要在资源的唯一标识号前面加上“cid:”,以说明要采用唯一标识号对资源进行引用。

6.使用JavaMail API收发邮件

JavaMail API按其功能划分通常可分为如下三大类:
创建和解析邮件内容的API :Message类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。
发送邮件的API:Transport类是发送邮件的核心API类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,例如SMTP协议。
接收邮件的API:Store类是接收邮件的核心API类,它的实例对象代表实现了某个邮件接收协议的邮件接收对象,例如POP3协议。
Session类
Session类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等。Session对象根据这些信息构建用于邮件收发的Transport和Store对象,以及为客户端创建Message对象时提供信息支持。


7.Base64Util

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import sun.misc.BASE64Encoder;
public class Base64Util
{
 public static void main(String args[]) throws IOException
 {
  System.out.print("请输入用户名:");
  BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  String userName = in.readLine();
  System.out.print("请输入密码:");
  String password = in.readLine();
  BASE64Encoder encoder = new BASE64Encoder();
  System.out.println("编码后的用户名为:"
    + encoder.encode(userName.getBytes()));
  System.out.println("编码后的密码为:"
    + encoder.encode(password.getBytes()));  
 }
}


8.使用JavaMail发送一封简单的邮件:
创建包含邮件服务器的网络连接信息的Session对象。
创建代表邮件内容的Message对象。
创建Transport对象、连接服务器、发送Message、关闭连接。

public class SendMail {

 public static void send(String[] args) throws Exception {
  
  String from = "
flx@flx.com";
  String to = "
flx@flx.com";
  String subject = "玩一把";
  String content = "uuuuuuuuuuuuuuuuuuu";
  
  Properties prop = new Properties();
  prop.setProperty("mail.smtp.host", "localhost");
  prop.setProperty("mail.transport.protocol", "smtp");
  prop.setProperty("mail.smtp.auth", "true");
  
  Session session = Session.getInstance(prop);
  session.setDebug(true);
  Message message = createMessage(session,from,to,subject,content);
  
  Transport ts = session.getTransport();
  ts.connect("flx","123456");
  ts.sendMessage(message, new InternetAddress[]{new InternetAddress(to)});
  ts.close();  
 }
 
 public static Message createMessage(Session session,String from,String to,String subject,String content) throws Exception{
  
  MimeMessage message = new MimeMessage(session);
  message.setFrom(new InternetAddress(from));
  message.setRecipient(Message.RecipientType.TO,new InternetAddress(to));
  message.setSubject(subject);
  
  message.setContent(content, "text/html");
  message.saveChanges();
  
  return message;
 }

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhchzh1000

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值