跟前两天基于SMTP协议的效果一样的,不过采用JavaMail确实方便多了,也简单多了。
运行此程序还需两个Java包:mail.jar和activation.jar,这两个包很容易下到的,在此就不多说了
本程序用到的JavaMail API的核心类有:会话、消息、地址、验证程序、传输类
其功能分别如下:
Session类
Session类定义了一个基本的邮件会话。通过该会话可让别的工作顺利执行。Session对象利用java.util.Properties对象获取诸如邮件服务器、用户名、密码等信息,以及其他可在整个应用程序中共享的信息。
Message类
创建要发送的消息。
Address类
一旦创建了会话和消息,并为消息填充了内容,就需要用Address类为您的信件标上地址了。
Authenticator类
与java.net类一样,JavaMail API可以利用Authenticator(验证程序)类通过用户名和密码来访问受保护的资源。
Transport类
发送消息的最后一步操作是使用Transport类。该类使用特定于协议(通常是SMTP)的语言来发送消息。
JavaMail.java
-------------------------------------------------------
package mail;
import java.util.*;
import javax.mail.Address;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.*;
import javax.mail.*;
public class JavaMail {
String server="smtp.126.com";//smtp服务器
String to="wasingmon@eyou.com";//收件人地址
String from="wasingmon@126.com";//发件人地址
String user="wasingmon";// 登陆服务器用户名
String password="";//密码
String subject="2222222";
String content="1111111";
boolean auth=true;
boolean debug=true;
public static void main(String[] args) {
JavaMail sendMessage=new JavaMail();
Properties props=new Properties();
props.put("mail.smtp.host",sendMessage.server);
props.put("mail.smtp.auth",String.valueOf(sendMessage.auth));//需要身份验证
props.put("mail.dubug",String.valueOf(sendMessage.debug));//显示调试信息,方便调试
PopupAuthenticator auth=new PopupAuthenticator(sendMessage.user, sendMessage.password);
try{
Session session=Session.getInstance(props,auth);// 创建会话
session.setDebug(true);
MimeMessage message=new MimeMessage(session); //创建消息
Address addressTo=new InternetAddress(sendMessage.to,"wxm1");//创建地址对象
Address addressFrom=new InternetAddress(sendMessage.from,"wxm2");
message.setContent(sendMessage.content,"text/plain");//设置消息的各个部分内容
message.setSubject(sendMessage.subject);
message.setFrom(addressFrom);
message.addRecipient(Message.RecipientType.TO,addressTo);
message.saveChanges();
Transport transport=session.getTransport("smtp");//传输对象
transport.connect(sendMessage.server,25,sendMessage.user,sendMessage.password);
Transport.send(message);
transport.close();
System.out.println("Succ!");
}catch(Exception e){
e.printStackTrace();
System.out.println("发送失败!");
}
}
}
class PopupAuthenticator extends Authenticator{
private String username,password;
public PopupAuthenticator(String username,String password){
this.password=password;
this.username=username;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username,password);
}
}