关于JavaMail

一.概述

1.邮件协议:

SMTP:(Simple Mail Transfer Protocol,简单邮件传输协议)发邮件协议;

POP3:(Post Office Protocol Version 3,邮局协议第3版)收邮件协议;

IMAP:(Internet Message Access Protocol,因特网消息访问协议)收发邮件协议

2.邮件服务器名称

smtp服务器的端口号为25,服务器名称为smtp.xxx.xxx。

pop3服务器的端口号为110,服务器名称为pop3.xxx.xxx。

例如:

>163:smtp.163.com和pop3.163.com;

>126:smtp.126.com和pop3.126.com;

>qq:smtp.qq.com和pop3.qq.com;

>sohu:smtp.sohu.com和pop3.sohu.com;

...

sina:smtp.sina.com和pop3.sina.com。

二.JavaMail之HelloWrold

Java Mail是由SUN公司提供的专门针对邮件的API,主要Jar包:mail.jar、activation.jar。

  发邮件主要分为三步:1.获取Session(重点是构造器中传递的两个参数)

            2.创建MimeMessage对象(把session作为参数传入)

            3.发送邮件

  public static void mailDemo(){

    //获取Session

    Properties props = new Propties();

    props.setProperty("mail.host","smtp.163.com");//设置服务器主机名

    props.setProperty("mail.smtp.auth","true");//设置需要认证

  

    Authenticator auth = new Authenticator(){

     protected PasswordAuthentication getPasswordAuthentication(){

        return new PasswordAuthentication("emailAccount","password");//设置邮箱账号和密码

      }   

    }

    Session session = new Session(props,auth);

   //创建MimeMessage

  MimeMessage msg = new MimeMessage(session);

  msg.setFrom(new InternetAddress("邮箱地址"));//设置发件人

  msg.setRecipients(RecipientType.TO,"邮箱地址");//设置收件人

  msg.setRecipients(RecipientTYpe.CC,"邮箱地址");//设置抄送

  msg.setRecipients(RecipientType.BCC,"邮箱地址");//设置暗送

  //-----------------------------------------------------

    //不带附件

   msg.setSubject("邮件主题");

   msg.setContent("邮件内容","text/html;charset=utf-8");

  //------------------------------------------------------

    //带附件

   MimeMultipart list = new MimeMultipart();//创建多部件内容

    MimeBodyPart part1 = new MimeBodyPart();//创建主体部件

    part1.setContent("邮件内容","text/html;charset=utf-8");

    MimeBodyPart part2 = new MimeBodyPart();

    part2.attachFile(new File("FilePath"));//设置附件内容

    part2.setFileName(MimeUtility.encodeText("文件名"));//设置显示的文件名称并处理了中文乱码问题

    list.addBodyPart(part1);//把主体部件添加到集合中

    list.addBodyPart(part2);

    msg.setContent(list);//把多部件内容设置我邮件内容

  //------------------------------------------------------

  Reansport.send(msg);//发送邮件

  }

三.注意事项

  >使用MyEclipse是要选择JAVA EE 6  libraries   用5报错

   >我们用Java发送邮件时相当于自定义客户端根据用户名和密码进行登录,然后使用SMTP服务发送邮件。但新注册的163邮件默认是不开启客户端授权验证的 应手动设置!

上一篇:正确配置jstl的maven依赖,jar包冲突的问题终于解决啦


下一篇:Git版本管理荟萃