java中利用mail.jar发送email

近期项目中有个利用程序发送email的需求,今天上网查了下,使用mail.jar库实现起来还是比较简单的,java中的工具是在是太多了,赞下,不过也会让人变得越来越笨的…..

总结下大体的步骤:1,下载activation.jar和mail.jar包,可以到sun的官网上下载不过速度比较慢,我是在上下载的,没有版本说明,不过一般的要求应该是能够满足的下面开始编写发送email程序:<1>利用Properties设置一些基本的配置,比如

//设置一些基本属性property.put(“mail.smtp.host”, SMTP_HOST);property.put(“mail.smtp.port”, SMTP_PORT);property.put(“mail.smtp.protocol” , SMTP_PROTOCOL);property.put(“mail.smtp.auth”,SMTP_AUTH);

<2>自己编写一个认证类,继承自抽象类Authenticator,并实现getPasswordAuthentication方法,,如下:

class MyAuthenticator extends Authenticator{private String user;private String password;public MyAuthenticator(String user,String password){this.user = user;this.password = password;}protected PasswordAuthentication getPasswordAuthentication(){return new PasswordAuthentication(user,password);}}

其中user和password是正常登陆邮箱时属性的用户名和密码的验证信息<3>获得发送邮件的会话

MyAuthenticator myauth = new MyAuthenticator(AUTH_USER,AUTH_PASSWORD);//获得发送邮件的会话Session mailSession = Session.getDefaultInstance(property,myauth);

<4>生成所要发送的message,包括目的地址,发送地址,title,content

//生成发送的消息Message message = new MimeMessage(mailSession);try{//形成发送的mail地址InternetAddress fromAddress = new InternetAddress(FROM_ADDRESS);message.setFrom(fromAddress);InternetAddress toAddress = new InternetAddress(to);//加入发送消息的目的地址addRecipients()两个重载函数message.addRecipient(Message.RecipientType.TO, toAddress);//设置消息题message.setSubject(title);//设置消息主题message.setText(content);//保存message.saveChanges();}

<5>发送email

//发送mailtry{Transport.send(message, message.getRecipients(Message.RecipientType.TO));}

总的来说,发送email的过程是:生成会话包括认证信息和配置信息->message消息->发送->结束。具体的API请参看官方手册源程序如下

package org.solucking.smf.util;import java.util.Date;import java.util.Properties;import java.util.List;import java.util.ArrayList;import javax.mail.Address;import javax.mail.Authenticator;import javax.mail.Message;import javax.mail.SendFailedException;import javax.mail.Session;import javax.mail.Transport;import javax.mail.internet.InternetAddress;import javax.mail.internet.MimeMessage;import javax.mail.internet.AddressException;import javax.mail.Authenticator;import javax.mail.PasswordAuthentication;public class SendMail {public static String SMTP_HOST = “smtp.163.com”;public static String SMTP_PORT = “25″;public static String SMTP_PROTOCOL = “SMTP”;public static String SMTP_AUTH = “true”;public static String AUTH_USER = “*****”;public static String AUTH_PASSWORD = “****”;public static String FROM_ADDRESS = “*****@163.com”;/*** 发送email,目的地址为一个* @param to 目的email地址* @param title email的标题* @param content email的内容* @return 返回是否发送成功*/public static boolean send(String to,String title,String content){boolean isSuccess = true;if( to == null || title == null || content == null)return false;Properties property = new Properties();//设置一些基本属性property.put(“mail.smtp.host”, SMTP_HOST);property.put(“mail.smtp.port”, SMTP_PORT);property.put(“mail.smtp.protocol” , SMTP_PROTOCOL);property.put(“mail.smtp.auth”,SMTP_AUTH);MyAuthenticator myauth = new MyAuthenticator(AUTH_USER,AUTH_PASSWORD);//获得发送邮件的会话Session mailSession = Session.getDefaultInstance(property,myauth);//生成发送的消息Message message = new MimeMessage(mailSession);try{//形成发送的mail地址InternetAddress fromAddress = new InternetAddress(FROM_ADDRESS);message.setFrom(fromAddress);InternetAddress toAddress = new InternetAddress(to);//加入发送消息的目的地址addRecipients()两个重载函数message.addRecipient(Message.RecipientType.TO, toAddress);//设置消息题message.setSubject(title);//设置消息主题message.setText(content);//保存message.saveChanges();}catch(Exception e){isSuccess = false;System.out.println(e.getMessage());}//发送mailtry{Transport.send(message, message.getRecipients(Message.RecipientType.TO));}catch(Exception e){isSuccess = false;System.out.println(e.getMessage());}return isSuccess;}/*** 发送email,目的地址为一组* @param toList 一组email地址* @param title email的标题* @param content email的内容* @return boolean 返回是否成功*/public static boolean send(List toList,String title,String content){boolean isSuccess = true;if( toList == null || title == null || content == null || toList.size() == 0 )return false;Properties property = new Properties();//设置一些基本属性property.put(“mail.smtp.host”, SMTP_HOST);property.put(“mail.smtp.port”, SMTP_PORT);property.put(“mail.smtp.protocol” , SMTP_PROTOCOL);property.put(“mail.smtp.auth”,SMTP_AUTH);MyAuthenticator myauth = new MyAuthenticator(AUTH_USER,AUTH_PASSWORD);//获得发送邮件的会话Session mailSession = Session.getDefaultInstance(property,myauth);//生成发送的消息Message message = new MimeMessage(mailSession);try{//形成发送的mail地址InternetAddress fromAddress = new InternetAddress(FROM_ADDRESS);message.setFrom(fromAddress);for(String to:toList){InternetAddress toAddress = new InternetAddress(to);//加入发送消息的目的地址addRecipients()两个重载函数message.addRecipient(Message.RecipientType.TO, toAddress);}//设置消息题message.setSubject(title);//设置消息主题message.setText(content);//保存message.saveChanges();}catch(Exception e){isSuccess = false;System.out.println(e.getMessage());}//发送mailtry{Transport.send(message, message.getRecipients(Message.RecipientType.TO));}catch(Exception e){isSuccess = false;System.out.println(e.getMessage());}return isSuccess;}/*** @param args*/public static void main(String[] args) {// TODOString to = “*****@163.com”;String title = “email 测试程序”;String content = “我测试用得,不要回复呀。”;List toList = new ArrayList();toList.add(to);toList.add(“yangguangli19871124@gmail.com”);boolean res = SendMail.send(toList, title, content);if( res == true )System.out.println(“发送成功”);

一张单程车票,一颗潇洒的心。

java中利用mail.jar发送email

相关文章:

你感兴趣的文章:

标签云: