WEB项目使用JavaMail 发送邮件

//下面是发送邮件的工具类,在web项目下使用,需要再导两个包
package com.zjh.shopping.util;

import java.util.Date;  

import java.util.Properties;  
 
import javax.activation.DataHandler;  
import javax.activation.FileDataSource;  
import javax.mail.Authenticator;  
import javax.mail.Multipart;  
import javax.mail.PasswordAuthentication;  
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeBodyPart;  
import javax.mail.internet.MimeMultipart;  
import javax.mail.internet.MimeUtility;  
 
 
public class JavaMailSendUtil {  
 
       
      public  void sendmail(String subject, String from,String[] to,  
                      String text, String[] filenames, String mimeType) { 
              try {  
                      Properties props = new Properties();  
 
                      String smtp = "smtp.163.com"; // 设置发送邮件所用到的smtp 
                      String servername = "*******";  //邮箱账号名
                      String serverpaswd = "******";  //邮箱密码
 
                      javax.mail.Session mailSession = null; // 邮件会话对象 
                      javax.mail.internet.MimeMessage mimeMsg = null; // MIME 邮件对象 
 
                      props = java.lang.System.getProperties(); // 获得系统属性对象 
                      props.put("mail.smtp.host", smtp); // 设置SMTP主机 
                      props.put("mail.smtp.auth", "true"); // 是否到服务器用户名和密码验证 
                      // 到服务器验证发送的用户名和密码是否正确  
                      SmtpAuthenticator myEmailAuther = new SmtpAuthenticator(servername, 
                                      serverpaswd);  
                      // 设置邮件会话 注意这里将认证信息放进了Session的创建参数里  
                      mailSession = javax.mail.Session.getInstance(props, 
                                      (Authenticator) myEmailAuther);  
                      // 设置传输协议  
                      javax.mail.Transport transport = mailSession.getTransport("smtp"); 
                    // 设置from、to等信息  
                    mimeMsg = new javax.mail.internet.MimeMessage(mailSession); 
                    if (null != from &&!"".equals(from)) {  
                            InternetAddress sentFrom = new InternetAddress(from); 
                            mimeMsg.setFrom(sentFrom); // 设置发送人地址  
                    }  
 
                    InternetAddress[] sendTo = new InternetAddress[to.length]; 
                    for (int i = 0; i < to.length; i++) { 
                            System.out.println("发送到:" + to[i]);  
                            sendTo[i] = new InternetAddress(to[i]);  
                    }  
 
                    mimeMsg.setRecipients(  
                                    javax.mail.internet.MimeMessage.RecipientType.TO, sendTo); 
                    mimeMsg.setSubject(subject, "gb2312");  
 
                    MimeBodyPart messageBodyPart1 = new MimeBodyPart(); 
                    // messageBodyPart.setText(UnicodeToChinese(text)); 
                    messageBodyPart1.setContent(text, mimeType); 
 
                    // 附件传输格式  
                    Multipart multipart = new MimeMultipart();  
                    multipart.addBodyPart(messageBodyPart1);  
 
                    for (int i = 0; i < filenames.length; i++) { 
                            MimeBodyPart messageBodyPart2 = new MimeBodyPart(); 
 
                            String filename = filenames[i].split(";")[0]; 
                            String displayname = filenames[i].split(";")[1]; 
                            // 得到数据源  
                            FileDataSource fds = new FileDataSource(filename); 
                            // BodyPart添加附件本身  
                            messageBodyPart2.setDataHandler(new DataHandler(fds)); 
                            // BodyPart添加附件文件名  
                            messageBodyPart2.setFileName(MimeUtility  
                                            .encodeText(displayname));  
                            multipart.addBodyPart(messageBodyPart2);  
                    }  
                    mimeMsg.setContent(multipart);  
                    // 设置信件头的发送日期  
                    mimeMsg.setSentDate(new Date());  
                    mimeMsg.saveChanges();  
                    // 发送邮件  
                    transport.send(mimeMsg);  
                    transport.close();  
                    System.out.println("发送到成功!!!");  
            } catch (Exception e) {  
                    e.printStackTrace();  
            }  
    }  
 
     
    public static voidmain(String[] args) throws Exception {  
            String title = "测试邮件";// 所发送邮件的标题  
            String from = "************@163.com";// 从那里发送 
            String sendTo[] = { "********@qq.com" };// 发送到那里 
            // 邮件的文本内容,可以包含html标记则显示为html页面  
            String content = "test java send mail!!!!!!<br><ahref="http://sjsky.javaeye.com/">Myblog</a>";  
        // 所包含的附件,及附件的重新命名  
        String fileNames[] = { "d:\\test.jpg;test.jpg" }; 

        JavaMailSendUtil test = new JavaMailSendUtil(); 
        try {  
                // MailSender mailsender = new MailSender(); 
                test.sendmail(title, from, sendTo, content, fileNames, 
                                "text/html;charset=gb2312");  
        } catch (Exception ex) {  
                ex.printStackTrace();  
        }  
  }  

   
  class SmtpAuthenticator extends Authenticator { 
        String username = null;  
        String password = null;  

         
        public SmtpAuthenticator(String username, String password) { 
                super();  
                this.username = username;  
                this.password = password;  
        }  

         
        public PasswordAuthentication getPasswordAuthenticatio n() { 
                return new PasswordAuthentication(this.username, this.password); 
            }  
    }  
}  

注意:在 myEclipse 里面建了一个 test 的 main 函数,发送邮件可以顺利通过,但是部署到 tomcat 以后会报 java.lang.NoClassDefFoundError:javax/mail/Message 的错误,必须activation.jar 和 mail.jar 两个包导入进去。
这两个包的下载地址:
http://d.download.csdn.net/down/1018034/vgsoft

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值