SMTP邮件发送,需要一个SMTP邮件服务器。
1.
验证发件人的授权
新建java类,MyAuthenticator.java 内容如下:


 import javax.mail.PasswordAuthentication;
import javax.mail.PasswordAuthentication;

 class MyAuthenticator extends javax.mail.Authenticator
class MyAuthenticator extends javax.mail.Authenticator


 {
{
 private String strUser;
    private String strUser;

 private String strPwd;
    private String strPwd;

 public MyAuthenticator(String user, String password)
    public MyAuthenticator(String user, String password)

 
     {
{
 this.strUser = user;
        this.strUser = user;
 this.strPwd = password;
        this.strPwd = password;
 }
    }

 protected PasswordAuthentication getPasswordAuthentication()
    protected PasswordAuthentication getPasswordAuthentication()

 
     {
{
 return new PasswordAuthentication(strUser, strPwd);
        return new PasswordAuthentication(strUser, strPwd);
 }
    }
 }
}



2.SMTP邮件发送
新建java类,SendEmail.java 内存如下:

 import javax.activation.DataHandler;
import javax.activation.DataHandler;
 import javax.activation.FileDataSource;
import javax.activation.FileDataSource;
 import javax.mail.BodyPart;
import javax.mail.BodyPart;
 import javax.mail.Message;
import javax.mail.Message;
 import javax.mail.Multipart;
import javax.mail.Multipart;
 import javax.mail.Session;
import javax.mail.Session;
 import javax.mail.Transport;
import javax.mail.Transport;
 import javax.mail.internet.InternetAddress;
import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeMultipart;


 public class SendEmail
public class SendEmail


 {
{
 private static String host     = ""; // SMTP服务器地址
    private static String host     = ""; // SMTP服务器地址

 private static String password = ""; // 密码
    private static String password = ""; // 密码

 private static String from     = ""; // 发件人
    private static String from     = ""; // 发件人

 private static String to       = "";  // 收件人
    private static String to       = "";  // 收件人

 private static String cc       = “”;  // 抄送人(中间使用;隔开)
    private static String cc       = “”;  // 抄送人(中间使用;隔开)

 public static void send(String subject, String content, String filename)
    public static void send(String subject, String content, String filename)

 
     {
{
 Properties props = System.getProperties();
        Properties props = System.getProperties();

 props.put("mail.smtp.host", host);//指定SMTP服务器
        props.put("mail.smtp.host", host);//指定SMTP服务器
 props.put("mail.transpost.protocol", "smtp");
        props.put("mail.transpost.protocol", "smtp");
 props.put("mail.smtp.port", "25");
        props.put("mail.smtp.port", "25");
 props.put("mail.smtp.auth", "true");//指定是否需要SMTP验证
        props.put("mail.smtp.auth", "true");//指定是否需要SMTP验证
 
        
 //需要SSL安全验证
        //需要SSL安全验证
 props.setProperty("mail.smtp.starttls.enable", "true");
        props.setProperty("mail.smtp.starttls.enable", "true"); 

 //        props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
//        props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
 //        props.setProperty("mail.smtp.socketFactory.fallback", "false");
//        props.setProperty("mail.smtp.socketFactory.fallback", "false");
 //        props.setProperty("mail.smtp.socketFactory.port", "25");
//        props.setProperty("mail.smtp.socketFactory.port", "25");
 try
        try

 
         {
{
 MyAuthenticator myauth = new MyAuthenticator(from, password);
            MyAuthenticator myauth = new MyAuthenticator(from, password);
 Session mailSession = Session.getDefaultInstance(props, myauth);
            Session mailSession = Session.getDefaultInstance(props, myauth);
 mailSession.setDebug(true);//是否在控制台显示debug信息
            mailSession.setDebug(true);//是否在控制台显示debug信息

 Message message = new MimeMessage(mailSession);
            Message message = new MimeMessage(mailSession);
 message.setFrom(new InternetAddress(from));//发件人
            message.setFrom(new InternetAddress(from));//发件人
 message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));//收件人
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));//收件人
 // 是否有抄送人
            // 是否有抄送人
 if (!StringUtil.isBlank(cc))
            if (!StringUtil.isBlank(cc))

 
             {
{
 String[] bccs = cc.split(";");
                String[] bccs = cc.split(";");
 InternetAddress bcc = null;
                InternetAddress bcc = null;
 InternetAddress[] bccAddrs = new InternetAddress[bccs.length];
                InternetAddress[] bccAddrs = new InternetAddress[bccs.length];
 for (int i = 0; i < bccs.length; i++)
                for (int i = 0; i < bccs.length; i++)

 
                 {
{
 if (!"".equals(bccs[i].trim()))
                    if (!"".equals(bccs[i].trim()))

 
                     {
{
 bcc = new InternetAddress(bccs[i].trim());
                        bcc = new InternetAddress(bccs[i].trim());
 bccAddrs[i] = bcc;
                        bccAddrs[i] = bcc;
 }
                    }
 }
                }
 message.setRecipients(Message.RecipientType.CC, bccAddrs);
                message.setRecipients(Message.RecipientType.CC, bccAddrs);
 }
            }
 message.setSubject(subject);//邮件主题
            message.setSubject(subject);//邮件主题
 // 有附件
            // 有附件
 if (!StringUtil.isBlank(filename))
            if (!StringUtil.isBlank(filename))

 
             {
{
 Multipart mp = new MimeMultipart();
                Multipart mp = new MimeMultipart();
 BodyPart bp = new MimeBodyPart();
                BodyPart bp = new MimeBodyPart();

 bp.setContent(content, "text/html;charset=utf-8");//邮件正文
                bp.setContent(content, "text/html;charset=utf-8");//邮件正文
 mp.addBodyPart(bp);
                mp.addBodyPart(bp);

 File file = new File(filename);
                File file = new File(filename);
 if (file.exists())
                if (file.exists())

 
                 {
{
 BodyPart mdp = new MimeBodyPart();
                    BodyPart mdp = new MimeBodyPart();
 FileDataSource fileds = new FileDataSource(file);
                    FileDataSource fileds = new FileDataSource(file);
 mdp.setDataHandler(new DataHandler(fileds));
                    mdp.setDataHandler(new DataHandler(fileds));
 mdp.setFileName(fileds.getName());
                    mdp.setFileName(fileds.getName());
 mp.addBodyPart(mdp);
                    mp.addBodyPart(mdp);
 }
                }
 message.setContent(mp);
                message.setContent(mp);
 }
            }
 // 无附件
            // 无附件
 else
            else

 
             {
{
 message.setContent(content, "text/html;charset=utf-8");//邮件正文
                message.setContent(content, "text/html;charset=utf-8");//邮件正文
 }
            }
 message.saveChanges();
            message.saveChanges();

 Transport.send(message);
            Transport.send(message);

 }
        }
 catch (Exception e)
        catch (Exception e)

 
         {
{
 return;
            return;
 }
        }
 }
    }


 public static void main(String[] args)
    public static void main(String[] args)

 
     {
{
 SendEmail.send("测试邮件", "邮件发送测试!",  "本地附件地址");
        SendEmail.send("测试邮件", "邮件发送测试!",  "本地附件地址");
 }
    }

	posted on 2011-04-19 10:42 
Jarry 阅读(264) 
评论(0)  编辑  收藏  所属分类: 
Java