Java_mail
来源:互联网 发布:aisino a3软件下载 编辑:程序博客网 时间:2024/06/06 18:36
1 SMTP协议和 Pop3 协议
发邮件协议
SMTP协议 – Simple Mail(Message) TransferProtocol 发邮件协议。
一个协议就是一台主机。
收邮件协议
Pop3 – Post Office Protocol 3
使用SMTP交互式的协议发邮件
Ehlo 后面是一个任意的字符,说明我是
Auth login – 请求登录
Mail from:wj_@126.com
Rcpt to : 发送给某个
Data :以下是正文
以下就是一个操作smtp服务发邮件过程:
Xshell:\> telnet smtp.126.com 25
Looking up host 'smtp.126.com'...
Host 'smtp.126.com' resolved to123.125.50.111.
Connecting to 123.125.50.111:25...
Connection established.
To escape to local shell, press'Ctrl+Alt+]'.
220 126.com Anti-spam GT for CoremailSystem (126com[20121016])
ehlo aa
250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-coremail1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrU5G9qUCa0xDrUUUUj
250-STARTTLS
250 8BITMIME
auth login
334 dXNlcm5hbWU6
d2pfbGVhZjEyMzQ1 账户
334 UGFzc3dvcmQ6
MXFhejJ3c3g= 密码
235 Authentication successful
mail from:<wj_leaf12345@126.com>
250 Mail OK
rcpt to:<wj_leaf12345@163.com>
250 Mail OK
data
354 End data with<CR><LF>.<CR><LF>
from:<hjt@china.gov>
to:<wj_leaf12345@163.com>
subject:hello 主题
空行
where are you? 正文
. 一个点
250 Mail OK queued assmtp5,jtKowEBJwVw6wJRRaQeiAw--.496S2 1368703114
quit221 Bye
Connectionclosed by foreign host.
Type `help' tolearn how to use Xshell prompt.
使用pop3收邮件:
User 请求登录– 不要求base64编码
Pass 输入密码
List – 显示所有邮件信息
Stat – 查看邮件状态
Retr # - 查看某个邮件
telnetpop3.163.com 110
userchenzibiao5
密码
List
Retr1
2、用Java代码来发送邮件
第一步:导入jar包
第二步:核心类
javax.mail.Session– 确定与邮件服务器连接。会话。
Javax.mail.Message – 消息体。
子类:MimeMessage – 可以指定邮件的类型 。
TransPort– 静态的方法-sendMessage – 用于发送邮件。
Authenticator
The class Authenticator represents an object that knows how to obtain authentication(认证) for a network connection. Usually, it will do this by prompting the user for information.
Applications use this class by creating a subclass, and registering an instance of that subclass with the session when it is created. When authentication is required, the system will invoke a method on the subclass (like getPasswordAuthentication). The subclass's method can query about the authentication being requested with a number of inherited methods (getRequestingXXX()), and form an appropriate message for the user.
protected PasswordAuthentication
getPasswordAuthentication
()
Called when password authentication is needed.
Called when password authentication is needed. Subclasses should override the default implementation, which returns null.
PasswordAuthentication
The class PasswordAuthentication is a data holder that is used by Authenticator. It is simply a repository for a user name and a password
PasswordAuthentication
(java.lang.String userName, java.lang.String password)
Initialize a new PasswordAuthentication
Session
The Session class represents a mail session and is not subclassed. It collects together properties and defaults used by the mail API's. A single default session can be shared by multiple applications on the desktop. Unshared sessions can also be created.
The Session class provides access to the protocol providers that implement theStore
, Transport
, and related classes
void
setDebug
(boolean debug)
Set the debug setting for this Session.
MimeMessage
public MimeMessage(Session session)
Default constructor. An empty message object is created. The headers
field is set to an empty InternetHeaders object. Theflags
field is set to an empty Flags object. The modified
flag is set to true.
void
setFrom
(Address address)
Set the RFC 822 "From" header field.
void
setSubject
(java.lang.String subject, java.lang.String charset)
Set the "Subject" header field.
void
setContent
(java.lang.Object o, java.lang.String type)
A convenience method for setting this Message's content.
void
setRecipient
(Message.RecipientType type, Address address)
Set the recipient address.
第三步: 发一个文本邮件:
@Test
public void send1()throws Exception{
//声明资源
Properties p = new Properties();
//设置连接的服务器名称
p.setProperty("mail.host","smtp.126.com");
//声明使用用户名和密码
p.setProperty("mail.smtp.auth","true");
//声明认证的类
Authenticator auth = new Authenticator() {
/**
* 此方法用于返回用户名和密码的
*/
public PasswordAuthentication getPasswordAuthentication() {
//直接就声明这个类
PasswordAuthentication pwd =
new PasswordAuthentication("wj_leaf12345","1qaz2wsx");
return pwd;
}
};
Session s = Session.getDefaultInstance(p,auth);
//设置为调试
s.setDebug(true);
System.err.println("连接是否成功:"+s);
//声明一个消息
Message msg =new MimeMessage(s);
//设置发件人
msg.setFrom(new InternetAddress("wj_leaf12345@126.com"));
//设置收件人
msg.setRecipient(RecipientType.TO,new InternetAddress("wj_leaf12345@163.com"));
//设置主题
msg.setSubject("这是一个学生发的邮件2");
//设置内容
msg.setContent("大家好,大家是A班2","text/plain;charset=UTF-8");
//发送
Transport.send(msg);
}
第四步:发一个html的邮件:
//设置内容
msg.setContent("你好我是交通学院<a href='http://www.sdjtu.edu.cn'>JJEDU</a>","text/html;charset=UTF-8");
其余内容同第三步第五步;发带有附件的邮件
@Test
public void send2() throws Exception{
//声明资源
Properties p = new Properties();
//设置连接的服务器名称
p.setProperty("mail.host","smtp.126.com");
//声明使用用户名和密码
p.setProperty("mail.smtp.auth","true");
//声明认证的类
Authenticator auth = new Authenticator() {
/**
* 此方法用于返回用户名和密码的
*/
public PasswordAuthentication getPasswordAuthentication() {
//直接就声明这个类
PasswordAuthentication pwd =
new PasswordAuthentication("wj_leaf12345","1qaz2wsx");
return pwd;
}
};
Session s = Session.getDefaultInstance(p,auth);
//设置为调试
s.setDebug(true);
System.err.println("连接是否成功:"+s);
//声明一个消息
Message msg =new MimeMessage(s);
//设置发件人
msg.setFrom(new InternetAddress("wj_leaf12345@126.com"));
//设置收件人
msg.setRecipient(RecipientType.TO,new InternetAddress("wj_leaf12345@163.com"));
//设置主题
msg.setSubject("这是交通学院DDD");
//声明第一个body
MimeBodyPart body1 = new MimeBodyPart();
DataSource ds = new FileDataSource("./lib/34.jpg");
DataHandler dh = new DataHandler(ds);
body1.setDataHandler(dh);
body1.setFileName(MimeUtility.encodeText("大顺.jpg"));
//声明第二个body
MimeBodyPart body2 = new MimeBodyPart();
DataSource ds2 = new FileDataSource("./lib/mail.jar");
DataHandler dh2 = new DataHandler(ds2);
body2.setDataHandler(dh2);
body2.setFileName(MimeUtility.encodeText("aa.jar"));
MimeMultipart mmp = new MimeMultipart();
mmp.addBodyPart(body1);
mmp.addBodyPart(body2);
msg.setContent(mmp);
Transport.send(msg);
}
- java_mail
- Java_mail
- java_mail 发送邮件
- java_mail收发邮件
- java_mail收发邮件,绝对简单,绝对可用
- java_mail收发邮件,绝对简单,绝对可用
- C# 多线程目录拷贝 文件拷贝
- python——常见读写文件操作
- application 作用域
- chrome ipc (win) 笔记
- 分布式搜索Elasticsearch——删除指定索引
- Java_mail
- wince下使用C#打开一个外部程序
- android实现多线程下载
- jquery load 事件用法
- 用VS调试dump的几个问题
- C++内存泄漏的检测
- 字符数组的初始化
- C++各大知识点介绍
- Wince中修改IP地址而无需重启