WEB项目使用JavaMail 发送邮件

本文介绍了一种利用JavaMail API在Web项目中发送带有附件的电子邮件的方法。该方法包括设置SMTP服务器、邮件身份验证、构造邮件内容及附件,并通过实例演示了整个发送流程。

WEB项目使用JavaMail 发送邮件

(2010-06-02 20:26:39)
//下面是发送邮件的工具类,在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 void main(String[] args) throws Exception {  
            String title = "测试邮件";// 所发送邮件的标题  
            String from = "************@163.com";// 从那里发送  
            String sendTo[] = { "********@qq.com" };// 发送到那里  
            // 邮件的文本内容,可以包含html标记则显示为html页面  
            String content = "test java send mail !!!!!!<br><a href="http://sjsky.javaeye.com/">My blog</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.youkuaiyun.com/down/1018034/vgsoft

3

阅读 (1812) 评论 (0) 收藏 (1) 转载 (1) 喜欢 打印 举报
已投稿到:

转载列表:

    转载

    转载是分享博文的一种常用方式...

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值