JavaWeb(十五)---JavaMail

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a592381841/article/details/85269286

JavaMail

 JavaMail是sun公司(现以被甲骨文收购)为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议,如前面所讲的SMTP,POP3,IMAP,还有MIME等。我们在使用JavaMail API 编写邮件时,无须考虑邮件的底层实现细节,只要调用JavaMail 开发包中相应的API类就可以了。

邮箱图例

邮箱协议

  1. SMTP   :发送邮箱协议     端口:25
  2. POP3    :接收邮箱协议    端口:30
  3. IMAP      :收发邮箱协议

使用方法

 需要导入包  actvitor.jar  和 mail.jar

1-1发送不带附件的邮件

  1. 首先,要获得session;得到她,表示与服务器连接上了。
    1. Session session=Session.getInstance(Properties p,Authenticator a)
  2. Properties 需要指定两个键值对
    1. p.setProperty("mail.host","smtp.163.com")   //设置服务器主机名
    2. p.setProperty("mail.smtp.auth",true)  //设置是否需要认证
  3. Authenticator是一个接口表认证器,即校验客户端身份
    1.  Authenticator auth = new Authenticator() {
       public PasswordAuthentication getPasswordAuthentication({
          return new PasswordAuthentication("账号", "密码");
                  }
              };
              
  4. MimeMEssage 设置收发件人,主题,正文
    1. 创建一个Message,它相当于是邮件内容   Message message = new MimeMessage(session);
    2. 设置发送者       message.setFrom(new InternetAddress("*******@163.com"));
    3. 设置发送方式与接收者 
      1. ​​​​​​​message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(email));设置单个
      2. message.addRecipient(.....)设置多个
      3. MimeMessage.RecipientType.TO 设置收信人
      4. MimeMessage.RecipientType.CC 设置抄送人
      5. MimeMessage.RecipientType.BCC  设置暗送人
  5. 设置主题  message.setSubject("邮件发送测试");
  6. 设置内容  message.setContent(emailMsg, "text/html;charset=utf-8");
  7. 创建 Transport用于将邮件发送  Transport.send(message);

1-2发送带附件的邮件

带附件的邮件,此时正文是一个多部件形式。

使用方法:

  1. 前面相同,只有在设置邮件内容的时候不一样
  2. 多部件对象创建(部件集合) MimeMulitpart parts =new MimeMulitpart();
  3. 设置为正文  msg.setContent(parts );
  4. 部件添加文本
    1. MimeBodyPart p=new MimeBodyPart();
    2. p.setContent(emailMsg, "text/html;charset=utf-8");
    3. parts.addBodyPart(p);
  5. 附件
    1. MimeBodyPart p2=new MimeBodyPart();
    2. p2.attachFile("文件地址")  设置附件
    3. p2.setFileName(“文件名”) 设置附件名称
      1. 若文件名有中文; 用Mmeitlity来中文编码  p2.setFileName(MimeUitlity.encodeText("包含中文的名称"))
    4. parts.addBodyPart(p2);

猜你喜欢

转载自blog.csdn.net/a592381841/article/details/85269286