JavaMail的简单使用(自测可以发邮件)

  • 在很多项目中我们都会遇到发送邮件的功能,发送邮件其实还是很实用的,正好今天做项目需要实现,现在来简单的整理一下发送邮件的实现。

建立邮件与服务器之间的会话

Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.host", "smtp.sina.com");
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.debug", "true");
Session session = Session.getInstance(props);
  • 这里我使用的是sina的邮件服务器,
  • props.setProperty("mail.transport.protocol", "smtp");是指需要同smtp来实现验证登录
  • props.setProperty("mail.smtp.host", "smtp.sina.com");指明用的是sina的服务器,自测目前QQ的服务器是收费的,sina的这个服务器免费,但是不能连续发送太多的邮件,否则会发送失败的
  • props.setProperty("mail.smtp.auth", "true");这句必须有,这个是标识说后面我们用户名和密码验证成功后就可以发送邮件
  • props.setProperty("mail.debug", "true");开启debug模式,是为了方便我们开发用的,有了这个我们在开发中在控制台上我们就可以看到邮件的发送详情及发送的状态,返回250状态码,说明发送成功。
  • Session session = Session.getInstance(props);拿到本次的会话,下面我们就可以发送邮件

创建邮件

Message msg = new MimeMessage(session);

这里的msg就是我们的邮件,但是现在邮件还是空的,我们需要向里面添加文本,HTML,附件,主题。。。。。。信息。

  • 第一步:

    设置邮件的发送方msg.setFrom(new InternetAddress(这里填你的邮件));

  • 第二部:

    设置邮件的主题(主题就是邮件的主题,这个我就不解释了,如果上传附件这个也会是你下载的附件的压缩名称)msg.setSubject("培训班结业信息");

  • 第三部:

    设置邮件的附件,附件这里我们需要拿到附件在硬盘上的地址,这里我写了一个方法,

    public static MimeBodyPart createAttachment(String fileName) throws Exception { 
        MimeBodyPart attachmentPart = new MimeBodyPart(); 
        FileDataSource fds = new FileDataSource(fileName); //得到数据源 
        attachmentPart.setDataHandler(new DataHandler(fds)); //得到附件本身并至入attachmentPart 
        attachmentPart.setFileName(fds.getName()); 
        return attachmentPart; //得到文件名同样放入BodyPart
      } 

    然后我们通过这个方法就拿到这个附件,并加入到邮件里(msg)

    MimeBodyPart attachment01 = createAttachment(filePath);
    MimeMultipart allPart = new MimeMultipart("mixed"); 
    allPart.addBodyPart(attachment01); 
    msg.setContent(allPart); 
  • 注明发送地址

    msg.setRecipient(RecipientType.TO,
                    new InternetAddress(address));

发送邮件

  • 这里拿到邮件了,邮件的主题,内容,附件都设置好了,下面我们做的就是发送邮件

    Transport trans = session.getTransport();
    trans.connect(发送邮件的账号, 发送邮箱的密码);
    trans.sendMessage(msg, msg.getAllRecipients());
http://download.csdn.net/detail/u013132051/9642347
原文地址:https://www.cnblogs.com/zhangxinhua/p/8319236.html