l
使用
JavaMail
发送一封简单的邮件
Ø创建包含邮件服务器的网络连接信息的Session对象。
Ø创建代表邮件内容的Message对象。
Ø创建Transport对象、连接服务器、发送Message、关闭连接。
l
应用
Authenticator
类实现用户信息验证
Ø
结合
Transport.send
静态方法使用。
public class MailSender_simple {
public static void main(String[] args) throws Exception{
Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");//设置需要认证,来源于邮件协议,在文档中也有
props.setProperty("mail.transport.protocol", "smtp");//设置协议
/**
* 注意与getDefaultInstance的区别,getInstance返回新的,getDefaultInstance返回原来使用过的
*/
Session session = Session.getInstance(props);//3准备环境
session.setDebug(true);//把所有的调试信息打出来
Message msg = new MimeMessage(session);//1制造邮件、卫星
msg.setSubject("test from javamail");
msg.setText("test from javamail");//简单的文本
/**
* 需要与你登陆的一致,否则不成功
*/
msg.setFrom(new InternetAddress("xxssyyyyssxx@126.com"));//给邮件阅读器使用的
Transport transport = session.getTransport();//2制造发射器、火箭
// transport.connect("smtp.sohu.com",25,"xxssyyyyssxx","xsy881026");
transport.connect("smtp.126.com",25,"xxssyyyyssxx","xsy881026");
//一般情况下只需要使用静态方法send,但是如果需要发送给多个人,就需要使用这种方法,先connnect ,再发送
//收件人也是如此
transport.sendMessage(msg,new Address[]{new InternetAddress("xxssyyyyssxx@sohu.com")});
transport.close();
}
}
/**
* 具有smtp功能的发送器
* @author 熊诗言
*
*/
public class SMTPMailSender {
public static void main(String[] args) throws Exception{
// System.setProperty("socksProxyHost", "proxy2.lh.petrochina");
// System.setProperty("socksProxyPort", "8080");
Properties props = new Properties();
props.setProperty("mail.smtp.localhost", "mail.xsy.com");//其他服务器用于去顶主机身份
props.setProperty("mail.transport.protocol", "smtp");//设置协议
/**
* 注意与getDefaultInstance的区别,getInstance返回新的,getDefaultInstance返回原来使用过的
*/
Session session = Session.getInstance(props);//3准备环境
session.setDebug(true);//把所有的调试信息打出来
Message msg = new MimeMessage(session);//1制造邮件、卫星
msg.setSubject("test from javamail");
msg.setText("test from javamail");//简单的文本
String to = "xxssyyyyssxx@sohu.com";
msg.setRecipients(RecipientType.TO, InternetAddress.parse(to));
msg.setFrom(new InternetAddress("xxssyyyyssxx@126.com"));//给邮件阅读器使用的
msg.saveChanges();
Transport transport = session.getTransport("smtp");//2制造发射器、火箭
String domain = to.substring(to.indexOf("@")+1);
String server = getSMTPServer(domain,null);
transport.connect(server,25,null,null);
transport.sendMessage(msg,msg.getAllRecipients());
transport.close();
}
private static String getSMTPServer(String domain, String dnsServer) throws NamingException {
DirContext dirContext = new InitialDirContext();
Attributes mxAttribute = null;
if(dnsServer!=null){
mxAttribute = dirContext.getAttributes("dns:"+dnsServer+"/"+domain,
new String[]{"MX"});
}else {
mxAttribute = dirContext.getAttributes("dns:"+"/"+domain,
new String[]{"MX"});
}
String record = (String) mxAttribute.get("MX").get();
String smtp = record.substring(record.indexOf(" ") + 1);
return smtp;
}
}
public class MailSender_auth_send {
public static void main(String[] args) throws Exception{
Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "smtp.126.com");
Session session = Session.getInstance(props,
new Authenticator()
{
@Override/*策略模式,代码封装*/
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication("xxssyyyyssxx","xsy881026");
}
}
);
session.setDebug(true);
//*
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("xxssyyyyssxx@126.com"));
msg.setSubject("test中文");
//抄送:在发给你的时候也给另外一个人发送一份,你知道
//暗送:在发给你的时候也给另外一个人发送一份,你不知道
msg.setRecipients(RecipientType.TO,
InternetAddress.parse("熊诗言<xxssyyyyssxx@sohu.com>,yanshixiong@126.com"));
msg.setContent("<span style='color:red'>中文</span>", "text/html;charset=gbk");
Transport.send(msg);//*/
/*
//直接发送一封写好的邮件,这个由邮件客户端生成
Message msg = new MimeMessage(session,new FileInputStream("D:\\WorkSpace\\javamail\\classesresouce\\demo3.eml"));
Transport.send(msg,InternetAddress.parse("xxssyyyyssxx@sohu.com"));//*/
}
}
public class MailSender_simple {
public static void main(String[] args) throws Exception{
Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");//设置需要认证,来源于邮件协议,在文档中也有
props.setProperty("mail.transport.protocol", "smtp");//设置协议
/**
* 注意与getDefaultInstance的区别,getInstance返回新的,getDefaultInstance返回原来使用过的
*/
Session session = Session.getInstance(props);//3准备环境
session.setDebug(true);//把所有的调试信息打出来
Message msg = new MimeMessage(session);//1制造邮件、卫星
msg.setSubject("test from javamail");
msg.setText("test from javamail");//简单的文本
/**
* 需要与你登陆的一致,否则不成功
*/
msg.setFrom(new InternetAddress("xxssyyyyssxx@126.com"));//给邮件阅读器使用的
Transport transport = session.getTransport();//2制造发射器、火箭
// transport.connect("smtp.sohu.com",25,"xxssyyyyssxx","xsy881026");
transport.connect("smtp.126.com",25,"xxssyyyyssxx","xsy881026");
//一般情况下只需要使用静态方法send,但是如果需要发送给多个人,就需要使用这种方法,先connnect ,再发送
//收件人也是如此
transport.sendMessage(msg,new Address[]{new InternetAddress("xxssyyyyssxx@sohu.com")});
transport.close();
}
}
/**
* 具有smtp功能的发送器
* @author 熊诗言
*
*/
public class SMTPMailSender {
public static void main(String[] args) throws Exception{
// System.setProperty("socksProxyHost", "proxy2.lh.petrochina");
// System.setProperty("socksProxyPort", "8080");
Properties props = new Properties();
props.setProperty("mail.smtp.localhost", "mail.xsy.com");//其他服务器用于去顶主机身份
props.setProperty("mail.transport.protocol", "smtp");//设置协议
/**
* 注意与getDefaultInstance的区别,getInstance返回新的,getDefaultInstance返回原来使用过的
*/
Session session = Session.getInstance(props);//3准备环境
session.setDebug(true);//把所有的调试信息打出来
Message msg = new MimeMessage(session);//1制造邮件、卫星
msg.setSubject("test from javamail");
msg.setText("test from javamail");//简单的文本
String to = "xxssyyyyssxx@sohu.com";
msg.setRecipients(RecipientType.TO, InternetAddress.parse(to));
msg.setFrom(new InternetAddress("xxssyyyyssxx@126.com"));//给邮件阅读器使用的
msg.saveChanges();
Transport transport = session.getTransport("smtp");//2制造发射器、火箭
String domain = to.substring(to.indexOf("@")+1);
String server = getSMTPServer(domain,null);
transport.connect(server,25,null,null);
transport.sendMessage(msg,msg.getAllRecipients());
transport.close();
}
private static String getSMTPServer(String domain, String dnsServer) throws NamingException {
DirContext dirContext = new InitialDirContext();
Attributes mxAttribute = null;
if(dnsServer!=null){
mxAttribute = dirContext.getAttributes("dns:"+dnsServer+"/"+domain,
new String[]{"MX"});
}else {
mxAttribute = dirContext.getAttributes("dns:"+"/"+domain,
new String[]{"MX"});
}
String record = (String) mxAttribute.get("MX").get();
String smtp = record.substring(record.indexOf(" ") + 1);
return smtp;
}
}
public class MailSender_auth_send {
public static void main(String[] args) throws Exception{
Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "smtp.126.com");
Session session = Session.getInstance(props,
new Authenticator()
{
@Override/*策略模式,代码封装*/
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication("xxssyyyyssxx","xsy881026");
}
}
);
session.setDebug(true);
//*
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("xxssyyyyssxx@126.com"));
msg.setSubject("test中文");
//抄送:在发给你的时候也给另外一个人发送一份,你知道
//暗送:在发给你的时候也给另外一个人发送一份,你不知道
msg.setRecipients(RecipientType.TO,
InternetAddress.parse("熊诗言<xxssyyyyssxx@sohu.com>,yanshixiong@126.com"));
msg.setContent("<span style='color:red'>中文</span>", "text/html;charset=gbk");
Transport.send(msg);//*/
/*
//直接发送一封写好的邮件,这个由邮件客户端生成
Message msg = new MimeMessage(session,new FileInputStream("D:\\WorkSpace\\javamail\\classesresouce\\demo3.eml"));
Transport.send(msg,InternetAddress.parse("xxssyyyyssxx@sohu.com"));//*/
}
}