最近我在写毕业设计
是用的Tomcat
结果只写了个发邮件
现在想用javamail写一个能接收邮件的JSP页面
希望高手帮忙

解决方案 »

  1.   

    哪你给我发邮件或者加我的QQ
    [email protected]
    89496823
      

  2.   

    可笑的是全部显示在TOMCAT服务器上面了
    求能显示于页面的那种
      

  3.   

    刚学jsp,无能为力,精神支持中
      

  4.   

    买本孙卫琴的《Tomcat与java web开发技术详解》,或者到网上去下电子版。
    这本书有关于javamail的文章。
      

  5.   

    给你个例子
    /*
     * ————邮件订阅系统
     * Created on 2005-12-15
     * Author     fhp
     * 功能描述————邮件对象构造
     * TODO To change the template for this generated file go to
     * Window - Preferences - Java - Code Style - Code Templates
     */import java.util.Properties;import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.Address;
    import javax.mail.BodyPart;
    import javax.mail.Message;
    import javax.mail.Multipart;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeBodyPart;
    import javax.mail.internet.MimeMessage;
    import javax.mail.internet.MimeMultipart;/**
     * @author Administrator
     *
     * TODO To change the template for this generated type comment go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    public class MailConstructor { //private String EnvelopeFrom; //邮件发送地址
    //private String MailHost; //邮件服务器
    private String UserName; //用户名
    private String PassWord; //用户密码
    private MimeMessage mimeMsg;  //MIME邮件对象
    private Session session;  //邮件会话对象
    private Properties props;  //系统属性
    //private boolean needAuth = false;  //smtp是否需要认证
    private Multipart mp;  //Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象

    public MailConstructor () {

    }
    /**
    public void sendMail() {
    setSmtpHost(getConfig.mailHost);//如果没有指定邮件服务器,就从getConfig类中获取
    createMimeMessage();
    }
    **/
    public MailConstructor(String smtp){
    setSmtpHost(smtp);
    createMimeMessage();
    }
    /**
    * @param hostName String
    */
    public void setSmtpHost(String hostName) {

    System.out.println("设置系统属性:mail.smtp.host = "+hostName);
    if(props == null)props = System.getProperties();  //获得系统属性对象
    props.put("mail.smtp.host",hostName);  //设置SMTP主机
    }

    /**
    * @return boolean
    */
    public boolean createMimeMessage() {
    try {
    System.out.println("准备获取邮件会话对象!");
    session = Session.getDefaultInstance(props,null);  //获得邮件会话对象
    } catch(Exception e){
    System.err.println("获取邮件会话对象时发生错误!"+e);
    return false;
    }

    System.out.println("准备创建MIME邮件对象!");
    try{
    mimeMsg = new MimeMessage(session);  //创建MIME邮件对象
    mp = new MimeMultipart();
    return true;
    } catch(Exception e){
    System.err.println("创建MIME邮件对象失败!"+e);
    return false;
    }
    }
    /**
    * @param need boolean
    */
    public void setNeedAuth(boolean need) {
    System.out.println("设置smtp身份认证:mail.smtp.auth = "+need);
    if( props == null ) props = System.getProperties();

    if ( need ) {
    props.put("mail.smtp.auth","true");
    } else {
    props.put("mail.smtp.auth","false");
    }
    }
    /**
    * @param name String
    * @param pass String
    */
    public void setNamePass(String name,String pass) {
    UserName = name;
    PassWord = pass;
    }
    /**
    * @param mailSubject String
    * @return boolean
    */
    public boolean setSubject(String mailSubject) {
    System.out.println("设置邮件主题!");
    try{
    mimeMsg.setSubject(mailSubject);
    return true;
    } catch(Exception e) {
    System.err.println("设置邮件主题发生错误!");
    return false;
    }
    }
    /**
    * @param mailBody String
    */
    public boolean setBody(String mailBody) {
    try{
    BodyPart bp = new MimeBodyPart();
    bp.setContent("<meta http-equiv=Content-Type content=text/html; charset=gb2312>"+mailBody,"text/html;charset=GB2312");
    mp.addBodyPart(bp);
    return true;
    } catch(Exception e){
    System.err.println("设置邮件正文时发生错误!"+e);
    return false;
    }
    }
    /**
    * @param name String
    * @param pass String
    */
    public boolean addFileAffix(String filename) { System.out.println("增加邮件附件:"+filename);
    try{
    BodyPart bp = new MimeBodyPart();
    FileDataSource fileds = new FileDataSource(filename);
    bp.setDataHandler(new DataHandler(fileds));
    bp.setFileName(fileds.getName());
    mp.addBodyPart(bp);
    return true;
    } catch(Exception e){
    System.err.println("增加邮件附件:"+filename+"发生错误!"+e);
    return false;
    }
    }
    /**
    * @param name String
    * @param pass String
    */
    public boolean setFrom(String from) {
    System.out.println("设置发信人!");
    try{
    mimeMsg.setFrom(new InternetAddress(from)); //设置发信人
    return true;
    } catch(Exception e) {
    return false; 
    }
    }
    /**
    * @param name String
    * @param pass String
    */
    public boolean setTo(String to){
    if(to == null)return false;

    try {
    mimeMsg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));
    return true;
    } catch(Exception e) {
    return false;
    }
    }
    /**
    * @param name String
    * @param pass String
    */
    public boolean setCopyTo(String copyto) {
    if(copyto == null)return false;
    try{
    mimeMsg.setRecipients(Message.RecipientType.CC,(Address[])InternetAddress.parse(copyto));
    return true;
    } catch(Exception e) {
    return false;
    }
    }
    /**
    * @param name String
    * @param pass String
    */
    public boolean sendout() {
    try{
    mimeMsg.setContent(mp);
    mimeMsg.saveChanges();
    System.out.println("正在发送邮件....");

    Session mailSession = Session.getInstance(props,null);
    Transport transport = mailSession.getTransport("smtp");
    transport.connect((String)props.get("mail.smtp.host"),UserName,PassWord);
    transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
    //transport.send(mimeMsg);

    System.out.println("发送邮件成功!");
    transport.close();

    return true;
    } catch(Exception e) {
    System.err.println("邮件发送失败!"+e);
    return false;
    }
    } /**
    * Just do it as this
    */
    public static void main(String[] args) { String mailbody = "<meta http-equiv=Content-Type content=text/html; charset=gb2312>"+
    "<div align=center><a href=http://www.csdn.net> csdn </a></div>";

    MailConstructor themail = new MailConstructor("smtp.163.com");
    themail.setNeedAuth(true);

    if(themail.setSubject("标题") == false) return;
    if(themail.setBody(mailbody) == false) return;
    if(themail.setTo("[email protected],[email protected],[email protected]") == false) return;
    if(themail.setFrom("[email protected]") == false) return;
    //if(themail.addFileAffix("c:\\boot.ini") == false) return;
    themail.setNamePass("solo","3355");

    if(themail.sendout() == false) return; 
    }
    }
    /**
     * 
     * @author Administrator
     *
     * TODO To change the template for this generated type comment go to
     * Window - Preferences - Java - Code Style - Code Templates
     */
    class SMTPAuth extends javax.mail.Authenticator {
    private String user, password;

    public SMTPAuth(String u, String p) {
    user = u;
    password = p;
    }
    public void getuserinfo(String getuser, String getpassword) {
    user = getuser;
    password = getpassword;
    }
    protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
    return new javax.mail.PasswordAuthentication(user, password);
    }
    }
      

  6.   

    这个例子中javax.activation的包怎么没有啊~~我是在JBuilder 2006 中拷进去的~~
    能说说为什么吗?
      

  7.   

    你需要下载JavaBeans Activation Framework (JAF)来支持javax.activation 包。下载地址:
    http://java.sun.com/products/javamail/downloads/index.html
      

  8.   

    我是在JB中找不到包,
    import javax.activation.DataHandler;
    鼠标停在上面的提示:
    "MailConstructor.java"package javax.activation does not exist at line 15,colun 25
    要怎么将你那包放到JB当中去使得我在JB中能点得出来认到我是这么做的:将你说的Activation Framework 1.1 .zip下载完 解压完,进入Activation Framework 1.1--》jaf-1.1 里面有个activation.jar,将其解压成activation文件夹,然后将
    activation文件夹 拖到 JB目录/jdk1.4/src.zip 中去。结果:我在JB中可以点出activation.DataHandler;但是还是以下提示:
          "MailConstructor.java"package javax.activation does not exist at line    15,colun 25望能给出具体说明~~  目录搞得我头晕~~@-@
    望能顺利做成你那邮件系统~~呵呵~~!
      

  9.   

    因为我对JB不熟悉,但应该是将包导入到JB中你这个项目的构建路径中。
      

  10.   

    设置系统属性:mail.smtp.host = smtp.163.com
    准备获取邮件会话对象!
    准备创建MIME邮件对象!
    设置smtp身份认证:mail.smtp.auth = true
    设置邮件主题!
    设置发信人!
    正在发送邮件....
    邮件发送失败!javax.mail.AuthenticationFailedException执行结果
      

  11.   

    JB:
    在你的project根节点上点右键
    有properties属性
    在里面配置project所需要的包
      

  12.   

    javax.mail.AuthenticationFailedException
    是你的验证信息错误
      

  13.   

    设置系统属性:mail.smtp.host = smtp.163.com
    准备获取邮件会话对象!
    准备创建MIME邮件对象!
    设置smtp身份认证:mail.smtp.auth = true
    设置邮件主题!
    设置发信人!
    正在发送邮件....
    邮件发送失败!javax.mail.AuthenticationFailedException
    if(themail.setTo("[email protected],[email protected],[email protected]") == false) return;
    if(themail.setFrom("[email protected]") == false) return;
    //if(themail.addFileAffix("c:\\boot.ini") == false) return;
    themail.setNamePass("solo","3355");
    这里要改成你的邮箱和用户名\密码的
      

  14.   

    那个包的导入解决了,谢谢~~skyairmj(方外)
    但是javax.mail 点不出mail  mail 是不是也要去sun上载了?
      

  15.   

    if(themail.setTo("[email protected],[email protected],[email protected]") == false) return;
    if(themail.setFrom("[email protected]") == false) return;
    上面那句啥意识?怎么这么多个邮件地址?下面是:发送的起点   上面是发送的终点?