JavaMail.docx
- 文档编号:7099807
- 上传时间:2023-01-17
- 格式:DOCX
- 页数:8
- 大小:652.46KB
JavaMail.docx
《JavaMail.docx》由会员分享,可在线阅读,更多相关《JavaMail.docx(8页珍藏版)》请在冰豆网上搜索。
JavaMail
基础知识
其中1,2,3都是用的是SMTP协议
4使用POP3协议。
IMAP是POP3的升级版本协议,但是现在主要的还是POP3
SMTP协议交互
登陆SMTP服务器后,将用命令来与SMTP服务器交互。
》》telnet25自己加的,smpt服务器的端口是25
《《服务器的信息
》》用户输入的
说明:
》》ehlo就是helo(hello,升级后,作者为了区分命令是升级的就换了e和h的位置)
《《Authloginplain:
服务器说auth需要身份验证,2种方式login和plain
Authlogin:
选择了login方式验证
《《空的是base64的乱码,我写不来,说明要你输入帐号:
》》base64username:
代表的是你通过base64编码过后的帐号
《空的是base64的乱码,我写不来,base64编码的,要你输入密码
》》base64password:
经过base64编码的密码
《《空的是base64的乱码,我写不来:
说明验证是否成功。
》》mailfrom:
说明邮件的发件人(要有尖括号,这里是跟smtp服务器说明你要以那个帐号发送邮件,用这个帐号来连接smtp服务器的)
《《然后服务器返回一些信息
》》rcptto:
<要发送的那个人的地址>
《《然后服务器返回一些信息
》》data(说明你要开始写内容了)
from:
(邮件的出处,这里是内容,smtp服务器不会查看,直接发送的)
to:
接收人
date:
发送时间
空行(这里要有空行,说明头和内容的区分)
空行一下都是邮件内容
.(这里用一个点来结束内容,服务器检测到点就认为你结束了内容)
《《然后服务器返回一些信息
》》quit退出telnet
服务器间Smpt连接问题
如果连接smpt服务器,都需要帐号密码,那么服务器和服务器间的连接需不需要呢
答案肯定是不需要的,那服务器怎么知道是服务器连接过来的呢?
是根据你的ip经过dns解析查看你是否是smtp服务器的(自己总结的,不知道对不对)
JavaMailAPI介绍
Message:
代表是一封邮件
Transport:
smtp协议传输Message的对象
Store:
接收Message的对象
Session:
JavaMail的环境。
JavaMailAPI依赖于JAF这个框架,1.6已经自带。
代码范例1:
packagecom.rotoy.mail;
importjava.util.Properties;
importjavax.mail.Address;
importjavax.mail.Message;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeMessage;
publicclassJavaMailDemo1{
publicstaticvoidmain(String[]args)throwsException{
Propertiesproperties=newProperties();
properties.setProperty("mail.smtp.auth","true");
properties.setProperty("mail.transport.protocol","smtp");
Sessionsession=Session.getInstance(properties);
session.setDebug(true);
Messagemessage=newMimeMessage(session);
message.setText("Hello,我的第一封邮件");
message.setFrom(newInternetAddress("pmslrxe@"));
Transporttransport=session.getTransport();
transport.connect("",25,"pmslrxe","密码不给看");
transport.sendMessage(message,newAddress[]{newInternetAddress("pmslrxe@"),newInternetAddress("583030555@")});
transport.close();
}
}
总结:
写mail程序,不好写第一笔,那么可以先从Message写起,根据参数来递推。
注意API
Transport的静态方法.send(….)已经包括了连接,发送和关闭连接
它相当于:
1.Transport的实例的connect(…..)方法,连接服务器
2.Transport的实例的sendMessage(…..)方法,就是单单发送邮件
3..Transport的实例的close(…..)方法,关闭连接
如果单单发一封邮件用静态比较好,多发的用实例的单一方法,免得连接过多。
(连接过多会是失败,服务器会认为是垃圾邮件)
代码范例2:
packagecom.rotoy.mail;
importjava.util.Properties;
importjavax.mail.Authenticator;
importjavax.mail.Message;
importjavax.mail.PasswordAuthentication;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.Message.RecipientType;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeMessage;
publicclassJavaMailDemo2{
publicstaticvoidmain(String[]args)throwsException{
Propertiesprops=newProperties();
props.setProperty("mail.smtp.auth","true");
props.setProperty("mail.transport.protocol","smtp");
props.setProperty("mail.host","");
//如果不在transport里面设置主机和端口这里可以设置,端口默认25
Sessionsession=Session.getInstance(props,newAuthenticator(){
protectedPasswordAuthenticationgetPasswordAuthentication(){
returnnewPasswordAuthentication("pmslrxe","rty610125620");
}
});
//用一个对象来封装帐号和密码,放在了session里面,也不在transport里面了
session.setDebug(true);
//显示调试信息
Messagemsg=newMimeMessage(session);
msg.setSubject("我的第二封邮件!
");
msg.setFrom(newInternetAddress("pmslrxe@"));
//注意这里!
!
!
这里的发送人已经不能在随便的乱写了,原来这里本属于邮件内容部分,服//务器不会检查你的邮件的from,就是来自哪里,你可以假冒别人写邮件,就是说这里就是邮件里面的发//件人,现在一定要是这个发件的帐号写在那里才可以,否则发生发件人地址不属于发送邮件的地址的错误
msg.setContent("你好第二封邮件!
我成功了!
","text/html;charset=gbk");
msg.setRecipients(RecipientType.TO,InternetAddress.parse("pmslrxe@,583030555@"));
//这里用了InternetAddress.parse来分析一个字符串,而不是用newAddress[]{new//InternerAddress(“pmslrxe@”),new//InternerAddress(“583030555@”)}
//这种方法来构建了。
它直接生成数组
Transport.send(msg);
//这个方法的参数上面已经设置好了,它的静态方法自带了,连接,发送和关闭连接。
}
}
Base64编码讲解
Base64就是依照上面来64个字母来的:
(’26大写’+’26小写’+’10数字’+‘+’+‘/’=64)
首先将以上的字母进行1~64的编号
我们要明白,几位的二进制最大能够表示64,那就是2的6次方才可以,说明要有111111,6个1才可以表示64,这样,我们在内存中的2进制,6位就表示上面一个字母。
例如一下的内存2进制数
6位为一组:
变成
所以就是24,22,9,35对应上面字母是:
YWJj
所以这个就是base64
老师的详细说明如下:
(图片不完全,右边没了)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JavaMail