Java 使用mail.jar包发邮件

首先导入mail.jar包并buildpath。
这个包主要用到的是 javax.mail.internet.*和 javax.mail.*的内容。
写一个连接qq的服务器(SMTP方式)的发邮件程序:

写一个静态方法sendEmail(){};
第一步:写一个properties并设置各项值等下要用:

        Properties props = System.getProperties();  
        // 创建信件服务器  
        props.put("mail.smtp.host", "smtp.qq.com");//主机host,跟邮件发送者必须一致
        props.put("mail.smtp.auth", "true"); // 通过验证
        props.put("mail.smtp.port", "465");//加密服务端口465
        props.put("mail.transport.protocol", "smtp");//方式为smtp
        props.put("mail.smtp.ssl.enable", "true");//加密
       //props.put("mail.debug", "true");//没什么用

创建一个会话把属性properties放进去:

Session session = Session.getDefaultInstance(props, null);  

创建一个消息把会话放进去:

MimeMessage msg = new MimeMessage(session);

然后把昵称转编码加上发送邮箱,设置from:

 msg.setFrom(new InternetAddress(MimeUtility.encodeText("发送人:") + "<266****[email protected]>"));  

新建接受方的地址to:

InternetAddress[] address = new InternetAddress[]{"944*9@qq.com","689*8@qq.com}

将地址添加到指定的接受类型:

msg.addRecipients(Message.RecipientType.TO, address); 

设置邮件主题subject:

msg.setSubject(subject);  

然后设置mime类型的Multipart部分,也就是正文:
先新建:

Multipart mp = new MimeMultipart(); 

然后添加附件,多个附件重复多次:

MimeBodyPart mbp = new MimeBodyPart();  
     // 得到数据源  
FileDataSource fds = new FileDataSource(filename);  
   // 得到附件本身并至入BodyPart  
mbp.setDataHandler(new DataHandler(fds));  
  // 得到文件名同样至入BodyPart  
mbp.setFileName(fds.getName());  
// 把这个mbp附件add进去  
mp.addBodyPart(mbp); 

同理,添加文本:

         MimeBodyPart mbp = new MimeBodyPart();  
         mbp.setText(body);
         mp.addBodyPart(mbp);

然后设置mp为消息正文:

 msg.setContent(mp);  

如果没有附件直接设置消息正文即可:

msg.setText("正文");

设置消息头的日期,更新所有并保存:

 msg.setSentDate(new Date());  
 msg.saveChanges();  

最后,连接并发送,关闭连接:

Transport transport = session.getTransport("smtp");  
 transport.connect(username, password);
 ransport.sendMessage(msg,msg.getRecipients(Message.RecipientType.TO));  
 transport.close();  

完毕!

你可能感兴趣的:(java)