zoukankan      html  css  js  c++  java
  • Java 发送邮件

    依赖:

    1         <dependency>
    2             <groupId>javax.mail</groupId>
    3             <artifactId>mail</artifactId>
    4             <version>1.4.7</version>
    5         </dependency>
    View Code

    代码:

      1 package cn.edu.buaa.act.mail;
      2 
      3 import java.util.Date;
      4 import java.util.Properties;
      5 
      6 import javax.activation.DataHandler;
      7 import javax.activation.DataSource;
      8 import javax.activation.FileDataSource;
      9 import javax.mail.Address;
     10 import javax.mail.Authenticator;
     11 import javax.mail.BodyPart;
     12 import javax.mail.Message;
     13 import javax.mail.Multipart;
     14 import javax.mail.PasswordAuthentication;
     15 import javax.mail.Session;
     16 import javax.mail.Transport;
     17 import javax.mail.internet.InternetAddress;
     18 import javax.mail.internet.MimeBodyPart;
     19 import javax.mail.internet.MimeMessage;
     20 import javax.mail.internet.MimeMultipart;
     21 
     22 public class SendEmail {
     23 
     24     private boolean validate = true;
     25     // 发送者邮箱名
     26     private String username = "monitor_car";
     27     // 发件人邮箱
     28     private String FROM = username + "@163.com";
     29     // 发送者邮箱密码
     30     private String password = "xxxx123";
     31     // 邮件显示的发件人
     32     private String FROM_NAME = "zhangyang";
     33     // 邮件服务器
     34     private String Email_Host = "smtp.163.com";
     35     // 邮件标题
     36     private String Email_Subject = "开会通知";
     37     // 邮件头
     38     private String Email_Header = "This Is Email Header";
     39     // 邮件内容
     40     private String Email_Body = "<a href="http://www.baidu.com">This Is Email Body</a>";
     41     // 收件人邮箱
     42     private String TO = "xxxx@163.com";
     43 
     44     public void doSendEmail(int mailType) {
     45 
     46         // 获取系统环境
     47         Properties prop = new Properties();
     48         Authenticator auth = null;
     49         // 判断发送邮件是否需要验证
     50         if (validate) {
     51             // 邮件服务器认证 用户名和密码
     52             auth = new Authenticator() {
     53                 protected PasswordAuthentication getPasswordAuthentication() {
     54                     return new PasswordAuthentication(username, password);
     55                 }
     56             };
     57         }
     58         // 添加必要的信息
     59         prop.put("mail.smtp.host", Email_Host);
     60         prop.put("mail.smtp.auth", validate);
     61 
     62         // 设置对话和邮件服务器进行通讯
     63         Session session = Session.getDefaultInstance(prop, auth);
     64         // 在控制台显示Debug信息
     65         session.setDebug(true);
     66         // 设置邮件对象
     67         Message message = new MimeMessage(session);
     68         try {
     69             // 设置邮件主题
     70             message.setSubject(Email_Subject);
     71             // 设置邮件标题
     72             message.setHeader("Header", Email_Header);
     73             // 设置发送时间
     74             message.setSentDate(new Date());
     75 
     76             // 设置发信人地址 和 名字
     77             Address address = new InternetAddress(FROM, FROM_NAME);
     78             // 把发件人信息添加到信息中
     79             message.setFrom(address);
     80 
     81             // 设置发件人地址
     82             Address toAddress = new InternetAddress(TO);
     83             // 设置接收人地址
     84             message.setRecipient(Message.RecipientType.TO, toAddress);
     85 
     86             // 设置多个收件人地址
     87             // message.addRecipient(Message.RecipientType.TO,new
     88             // InternetAddress("xxx@xxx.com"));
     89 
     90             // 设置邮件格式
     91             switch (mailType) {
     92             case 1:// 发送纯文本邮件
     93                 message.setContent(Email_Body, "text/plain; charset=utf-8");
     94                 break;
     95             case 2:// 发送html邮件
     96                 message.setContent(Email_Body, "text/html; charset=utf-8");
     97                 break;
     98             case 3:// 发送附件
     99                 message.setContent(Email_Body, "text/html; charset=utf-8");
    100 
    101                 Multipart multipart = new MimeMultipart();
    102                 // 邮件正文部分
    103                 BodyPart messageBodyPart = new MimeBodyPart();
    104                 messageBodyPart.setText("bodypart");
    105                 multipart.addBodyPart(messageBodyPart);
    106 
    107                 // 邮件附件部分
    108                 messageBodyPart = new MimeBodyPart();
    109                 // 设置上传的资源
    110                 DataSource source = new FileDataSource("C:/Users/zsm/Desktop/省级行政图.jpg");
    111                 // 添加到
    112                 messageBodyPart.setDataHandler(new DataHandler(source));
    113                 // 设置文件名称,记得后缀名
    114                 messageBodyPart.setFileName("tmp.jpg");
    115                 multipart.addBodyPart(messageBodyPart);
    116 
    117                 message.setContent(multipart);
    118                 break;
    119             default: {
    120                 System.out.println("要发送的邮件类型错误");
    121                 System.exit(1);
    122             }
    123             }
    124 
    125             // 保存上面添加的信息
    126             message.saveChanges();
    127             // 发送邮件
    128             System.out.println("类型 " + mailType + "开始发送邮件……");
    129             Transport.send(message);
    130             System.out.println("发送成功!");
    131         } catch (Exception e) {
    132             System.out.println("出错");
    133             e.printStackTrace();
    134         }
    135     }
    136 
    137     /**
    138      * @param args
    139      */
    140     public static void main(String[] args) {
    141         new SendEmail().doSendEmail(1);
    142     }
    143 }
    View Code
  • 相关阅读:
    AOP动态代理两种方式
    Spring AOP的两种代理方式
    面试中关于Redis的问题看这篇就够了
    关于redis,学会这8点就够了
    什么是MVCC
    JAVA 中BIO,NIO,AIO的理解
    JAVA异常体系结构详解
    Java多线程:由浅入深看synchronized的底层实现原理
    为什么wait,notify和notifyAll要与synchronized一起使用?
    Java并发之AQS详解
  • 原文地址:https://www.cnblogs.com/z-sm/p/5857655.html
Copyright © 2011-2022 走看看