JavaMail我已经安装上了:)希望大家说的详细点,我不太懂~~我现在在线,调试成功后马上结帖给分~~很有希望得100分哦~~~

解决方案 »

  1.   

    这是我收集的请参考一个简单的关于Email发送的javabeanpackage bag.mail;
    import java.util.*;
    import javax.mail.*;
    import java.io.*;
    import javax.mail.internet.*;
    import javax.activation.*;public class Email {
      protected String to = null;
      protected String subject = "Email Test";
      protected String body = null;  public Email() {
        super();
      }  public void setTo(String to) {
        this.to = to;
      }  public void setBody(String body) {
    this.body = body;
      }  public void sendmail() {
        try
        {
    String host = "smtp.163.net";
    String from = "your name";
    String to = "other email address";
    String username = "your username";
    String password = "your password";
    this.body = "This is a test"; SmtpAuth sa=new SmtpAuth();
    sa.getuserinfo(username,password);
    Session session;
    MimeMessage message;
    Properties props = System.getProperties();
    props.put("mail.smtp.auth","true");
    props.put("mail.smtp.host", host);
    session = Session.getInstance(props, sa);
    session.setDebug(true);
    message = new MimeMessage(session);
    message.setFrom(new InternetAddress(from));
    message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
    message.setSubject(subject);
    MimeBodyPart mbp = new MimeBodyPart();
    mbp.setText(body);
    Multipart mp = new MimeMultipart();
    mp.addBodyPart(mbp);
    message.setContent(mp);
    message.setSentDate(new java.util.Date());
    Transport transport = session.getTransport("smtp");
    transport.connect("smtp.163.net",username,password);
    transport.send(message);
        }
        catch (MessagingException e) {
    System.out.println("error" + e.getMessage());
        }
      }  class SmtpAuth extends javax.mail.Authenticator {
        private String user,password;
        public void getuserinfo(String getuser,String getpassword){
          user=getuser;
          password=getpassword;
        }
        protected javax.mail.PasswordAuthentication getPasswordAuthentication(){
          return new javax.mail.PasswordAuthentication(user,password);
        }
      }
    }
      

  2.   

    http://expert.csdn.net/Expert/topic/1197/1197493.xml?temp=.2795526
      

  3.   

    <%@ page import="java.util.*, javax.mail.*, javax.mail.internet.*" %>
    <%
      Properties props = new Properties();
      props.put("mail.smtp.host", "你的SMTP服务器");
      Session s = Session.getInstance(props,null);  MimeMessage message = new MimeMessage(s);  InternetAddress from = new InternetAddress("发件人邮件地址");
      message.setFrom(from);
      InternetAddress to = new InternetAddress("收件人邮件地址");
      message.addRecipient(Message.RecipientType.TO, to);
      
      message.setSubject("Test from JavaMail.");
      message.setText("Hello from JavaMail!");  Transport.send(message);
    %>这是最简单的例子.
      

  4.   

    发件人和收件人要同样的smtp服务器吧~~我给自己发能发的了,给别人就不行了
      

  5.   

    我怎么改了不同邮局的信箱,用发件人的smtp也发不出去呢?
      

  6.   

    <%@ page import="java.util.*, javax.mail.*, javax.mail.internet.*" %>
    <%
      Properties props = new Properties();
      props.put("mail.smtp.host", "smtp.0451.com");
      Session s = Session.getInstance(props,null);  MimeMessage message = new MimeMessage(s);  InternetAddress from = new InternetAddress("[email protected]");
      message.setFrom(from);
      InternetAddress to = new InternetAddress("[email protected]");
      message.addRecipient(Message.RecipientType.TO, to);
      
      message.setSubject("Test from JavaMail.");
      message.setText("Hello from JavaMail!");  Transport.send(message);
    %>这样没有问题,我把[email protected]换成任何一个就提示地址无效!!
      

  7.   

    package mail;
    import javax.mail.*;
    import javax.mail.internet.*;
    import java.util.*;public class sendMailBean {
    private String EntryName;
    private String Password;
    private String pop3Server;
    private String smtpServer;
    private String To;
    private String Body;
    private String Subject;Properties props = new Properties ();public sendMailBean() {}
    public void setEntryname(String name){
      this.EntryName=name;
    }
    public void setPassword(String password){
      this.Password=password;
    }
    public void setPop3Server(String pop3){
      this.pop3Server=pop3;
    }
    public void setSmtpServer(String smtp){
      this.smtpServer=smtp;
    }
    public void setRecipient(String to){
      this.To=to;
    }
    public void setBody(String body){
      this.Body=body;
    }
    public void setSubject(String subject){
      this.Subject=subject;
    }
    public String sendmail(){
      String log=null;
      try{
      props=System.getProperties();
      props.put("mail.smtp.host",smtpServer);
      props.put("mail.smtp.auth","true");
      PopupAuthenticator popAuthenticator = new PopupAuthenticator();
      PasswordAuthentication pop = popAuthenticator.performCheck(EntryName,Password);
      Session session=Session.getInstance(props,popAuthenticator );
      Message msg=new MimeMessage(session);  msg.setFrom(new InternetAddress(EntryName));
      msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(To,false));
      msg.setSubject(Subject);
      msg.setText(Body);
      msg.setSentDate(new Date());
      Transport.send(msg);
      return "Message sent OK.";
      }
      catch(Exception ex)
      {
        ex.printStackTrace();
        log = ex.getMessage();
      }
      return log;}}
      

  8.   

    你发不出去邮件除了楼上说的那种情况外,还有一种情况是像21cn等smtp服务器只有你交费了才能使用它的邮件服务,否则你只能从21cn的网站上登录,我有完整的javamail程序源代码,其实javamail的难点在收。
      

  9.   

    //我写了注释了。你自己看吧
    import java.io.*;
    import java.util.*;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.servlet.*;
    import javax.servlet.http.*;public class WebMailBean implements HttpSessionBindingListener {
      Session session = null;
      String protocol = null;
      String host = null;
      int port = -1;
      String user = null;
      String defaultFrom = null;
      Store store = null;
      Folder[] folders = null;
      String[] folderNames = null;
      Folder currentFolder = null;
      int currentMessageNumber = 0;
      Message currentMessage = null;  //使用你选择的smtp服务器
      public WebMailBean() {
        Properties properties = System.getProperties();
        properties.put("mail.transport.protocol", "smtp");
        properties.put("mail.smtp.host", "mail.yangnan.com");
        session = Session.getInstance(properties, null);    // session.setDebug(true);
      }  // 返回一个已安装协议的列表  public String[] getProtocols() {
        Provider[] providers = session.getProviders();    List storeProtocols = new ArrayList();    for (int i = 0; i < providers.length; ++i) {
          if (providers[i].getType() == Provider.Type.STORE) {
            storeProtocols.add(providers[i].getProtocol());
          } 
        }     return (String[]) storeProtocols.toArray(new String[0]);
      }   // 属性设置方法
      // 包括主机,协议,端口等  public void setProtocol(String protocol) {
        if (this.protocol == null) {
          this.protocol = protocol;
        } 
      }   public String getProtocol() {
        return this.protocol;
      }   public void setHost(String host) {
        if (this.host == null) {
          this.host = host;
        } 
      }   public String getHost() {
        return this.host;
      }   public void setPort(int port) {
        if (this.port == -1) {
          this.port = port;
        } 
      }   public int getPort() {
        return this.port;
      } 
    //用户
      public void setUser(String user) {
        if (this.user == null) {
          this.user = user;
        } 
      }   public String getUser() {
        return this.user;
      }   //使用密码来初始化一个连接  public void setPassword(String password) throws MessagingException {
        connect(password);
      }   // 使用用户的名称和主机来初始化一个发送人地址  public String getFrom() {
        if (defaultFrom == null) {
          defaultFrom = user + "@" + host;    } 
        return defaultFrom;
      } 
      void connect(String password) throws MessagingException {
        if (store == null) {
          store = session.getStore(protocol);
          store.connect(host, port, user, password);
          cacheFolders();
          setFolder("INBOX");
        } 
      }   // 在用户登录时判断是否仍然在连接中  public boolean isConnected() {
        if (store != null) {
          return store.isConnected();    } 
        return false;
      }   // 关闭连接  void close() {
        if (isConnected()) {
          try {        //将所有打开的文件夹关闭        if (folders != null) {
              for (int i = 0; i < folders.length; ++i) {
                if (folders[i].isOpen()) {
                  folders[i].close(true);
                } 
              } 
            }         if (store != null) {
              store.close();        } 
          } catch (MessagingException e) {        // 异常的处理
          } 
        } 
      }   // 对文件夹的操作进行缓存  void cacheFolders() throws MessagingException {
        Folder defaultFolder = store.getDefaultFolder();
        Folder[] childFolders = defaultFolder.list();    List availableFolders = new ArrayList();    for (int i = 0; i < childFolders.length; ++i) {
          String folderName = childFolders[i].getName();
          if (!folderName.startsWith(".") 
                  &&!folderName.equalsIgnoreCase("INBOX")) {
            availableFolders.add(childFolders[i]);
          } 
        }     // 按照文件夹的名称进行排序    Collections.sort(availableFolders, new Comparator() {
          public int compare(Object o1, Object o2) {
            return ((Folder) o1).getName()
              .compareToIgnoreCase(((Folder) o2).getName());
          } 
        });    // 将INBOX加到列表的第一的位置
        Folder inbox = defaultFolder.getFolder("INBOX");    if (inbox.exists()) {
          availableFolders.add(0, inbox);    } 
        folders = (Folder[]) availableFolders.toArray(new Folder[0]);
      }   // 从缓存的数组中寻找文件夹  Folder findFolder(String folderName) {
        for (int i = 0; i < folders.length; ++i) {
          if (folders[i].getName().equals(folderName)) {
            return folders[i];
          } 
        }     return null;
      }   public void setFolder(String folderName) throws MessagingException {
        currentFolder = findFolder(folderName);    if ((!currentFolder.isOpen()) && (currentFolder.exists()) 
                && ((currentFolder.getType() & Folder.HOLDS_MESSAGES) 
                    != 0)) {
          currentFolder.open(Folder.READ_WRITE);
        }     currentMessageNumber = 0;
        currentMessage = null;
      }   // 得到当前文件夹名称
      public String getFolderName() {
        return currentFolder.getName();
      }   //得到一个缓存文件夹名称数组
      public String[] getFolderNames() {
        String[] folderNames = new String[folders.length];    for (int i = 0; i < folders.length; ++i) {
          folderNames[i] = folders[i].getName();
        }     return folderNames;
      }   //得到除当前文件夹以外的所有文件夹的名称
      //以便用于信息在文件夹之间的转移  public String[] getOtherFolderNames() {
        String[] folderNames = new String[folders.length - 1];    for (int i = 0, j = 0; i < folders.length; ++i) {
          if (folders[i] != currentFolder) {
            folderNames[j++] = folders[i].getName();
          } 
        }     return folderNames;
      }   // 返回当前文件夹中的信件数目
      public int getMessageCount() throws MessagingException {
        return currentFolder.getMessageCount();
      }   //循环得到当前文件夹中未删除的信件
      public boolean getNextMessage() throws MessagingException {
        int messageCount = currentFolder.getMessageCount();    for (int i = currentMessageNumber + 1; i <= messageCount; ++i) {
          Message nextMessage = currentFolder.getMessage(i);      if (!nextMessage.isSet(Flags.Flag.DELETED)) {
            currentMessageNumber = i;
            currentMessage = nextMessage;        return true;
          } 
        }     return false;
      }   // 设置信件编号,rest一下信件的指针。
      public void setMessage(int messageNumber) 
              throws MessagingException {
        if (messageNumber == 0) {
          currentMessageNumber = messageNumber;
          currentMessage = null;    } else {
          currentMessageNumber = messageNumber - 1;
          getNextMessage();
        } 
      }
      

  10.   

    // 得到当前信件的编号
      public int getMessageNumber() {
        return currentMessage.getMessageNumber();
      }   // 得到当前信件发送时间,转为字符串格式
      public String getMessageSentDate() throws MessagingException {
        Date sentDate = currentMessage.getSentDate();    if (sentDate != null) {
          return sentDate.toString();
        } else {
          return "Date unknown";
        } 
      }   // 得到信件的发送地址和回复地址。
      public String getMessageFrom() throws MessagingException {
        Address[] addresses = currentMessage.getFrom();    if (addresses == null) {
          addresses = currentMessage.getReplyTo();    } 
        if (addresses.length > 0) {
          return addresses[0].toString();    } 
        return "";
      }   // 得到信件的回复地址。在地址数组中的第一个地址。
      public String getMessageReplyTo() throws MessagingException {
        Address[] addresses = currentMessage.getReplyTo();    if (addresses.length > 0) {
          return addresses[0].toString();    } 
        return "";
      } 
      public String getMessageTo() throws MessagingException {
        Address[] addresses = 
          currentMessage.getRecipients(Message.RecipientType.TO);    if (addresses != null && addresses.length > 0) {
          return addresses[0].toString();    } 
        return "";
      }   // 得到信件主题  public String getMessageSubject() throws MessagingException {
        String subject = currentMessage.getSubject();    if (subject == null) {
          subject = "";    } 
        return subject;
      }   //得到信件的大小  public String getMessageSize() throws MessagingException {
        String size = "?";    int bSize = currentMessage.getSize();    if (bSize != -1) {
          if (bSize >= 1024 * 1024) {
            int mbSize = bSize / (1024 * 1024);
            size = mbSize + " MB";      } else if (bSize >= 1024) {
            int kbSize = bSize / 1024;
            size = kbSize + " KB";      } else {
            size = bSize + " Bytes";
          } 
        }     return size;
      }   // 得到信件的内容
      public String getMessageText() 
              throws IOException, MessagingException {
        String text = currentMessage.getContentType();    if (currentMessage.isMimeType("text/*")) {
          text = (String) currentMessage.getContent();
        } else if (currentMessage.isMimeType("multipart/*")) {
          Multipart multipart = (Multipart) currentMessage.getContent();
          BodyPart firstPart = multipart.getBodyPart(0);      if (firstPart.isMimeType("text/*")) {
            text = (String) firstPart.getContent();
          } 
        }     return text;
      }   // 返回一个信件列表
      // 主要用于多封信件的发送,删除,转移等  Message[] findMessages(String[] messageNumbers) 
              throws MessagingException {
        if (messageNumbers != null) {
          List messageList = new ArrayList();      for (int i = 0; i < messageNumbers.length; ++i) {
            int messageNumber = 0;        try {
              messageNumber = Integer.parseInt(messageNumbers[i]);        } catch (NumberFormatException e) {
              messageNumber = 0;
            }         if (messageNumber > 0) {
              messageList.add(currentFolder.getMessage(messageNumber));
            } 
          }       return (Message[]) messageList.toArray(new Message[0]);
        }     return new Message[0];
      }   // jsp调用时根据得到的命令参数来进行处理。  public void doCommand(HttpServletRequest request) 
              throws MessagingException {
        String command = request.getParameter("command");
        String[] messageNumbers = request.getParameterValues("number");
        String toFolderName = request.getParameter("to");    Folder toFolder = findFolder(toFolderName);
    //进行复制处理
        if ("Copy".equalsIgnoreCase(command)) {
          if (toFolder != null) {
            Message[] messages = findMessages(messageNumbers);
            currentFolder.copyMessages(messages, toFolder);
          } 
        } else if ("Move".equalsIgnoreCase(command)) {//转移信件到别的文件夹      if (toFolder != null) {
            Message[] messages = findMessages(messageNumbers);
            currentFolder.copyMessages(messages, toFolder);
            currentFolder.setFlags(messages, 
                                   new Flags(Flags.Flag.DELETED), true);
          } 
        } else if ("Delete".equalsIgnoreCase(command)) {//删除信件      Message[] messages = findMessages(messageNumbers);
          currentFolder.setFlags(messages, new Flags(Flags.Flag.DELETED), 
                                 true);    } else if ("Send".equalsIgnoreCase(command)) {//发送信件//得到数据
    //发送人地址
    //发送地址
    //抄送地址
    //暗送地址
    //主题
    //内容
    //回复(如果是回复信件的话,得到原信件的编号)
          defaultFrom = request.getParameter("from");
          String to = request.getParameter("to");
          String cc = request.getParameter("cc");
          String bcc = request.getParameter("bcc");
          String subject = request.getParameter("subject");
          String text = request.getParameter("text");      String reply = request.getParameter("reply");      Message message = null;
          int replyNumber = 0;      try {
            replyNumber = Integer.parseInt(reply);      } catch (NumberFormatException e) {}      if (replyNumber > 0) {
            message = currentFolder.getMessage(replyNumber).reply(false);
          } else {
            message = new MimeMessage(session);
          }       message.setFrom(new InternetAddress(defaultFrom));      if (to != null) {
            message.setRecipients(Message.RecipientType.TO, 
                                  InternetAddress.parse(to));      } 
          if (cc != null) {
            message.setRecipients(Message.RecipientType.CC, 
                                  InternetAddress.parse(cc));      } 
          if (bcc != null) {
            message.setRecipients(Message.RecipientType.BCC, 
                                  InternetAddress.parse(bcc));      } 
          message.setSubject(subject);
          message.setText(text);      Transport.send(message);
        } 
      }   // 因扩展HttpSessionBindingListener接口所以必须实现valueBound,valueUnbound方法  public void valueBound(HttpSessionBindingEvent event) {}  public void valueUnbound(HttpSessionBindingEvent event) {
        close();
      } 
    }
      

  11.   

    我有一个正在使用的JavaBean,要的话,我可以发给你
    //**********SendMail.java****************//
    //Purpose: Send HTML or Text Mail
    //function: setFrom(String from)---From mail address, e.g. [email protected]
    //          setUser(String user)---Account of sender, e.g. anyone
    //          sSetPassword(String password)----Password of sender 
    //          setsmtpServer(String smtp)----SMTP mail Server
    //          setReply(String reply)----Recipient mail
    //          setSubject(String subject)-----Mail subject
    //          setContent(String content)-----Mail content
    //          setAuthentic(String authentic)----whether needs authentic
    //          setFileName(String filename)----Attached file
    .....
      

  12.   

    可以给我发一个吗?谢谢![email protected]
      

  13.   

    来迟了,麻烦,能不能也给我发一份
    [email protected]
      

  14.   

    你做了身份验证处理了吗?现在SMTP服务都要验证的。加一点点代码就可以了
    www.cn-java.com 上有专门的说明,在JavaMail专题里。
      

  15.   

    [email protected] 
    给我来一份,谢谢了
      

  16.   

    lazycalm(lazycalm) 
    我也来一份吧!谢谢了!!
    [email protected]
      

  17.   

    还有我,谢谢!
    [email protected]
      

  18.   

    不是吧,你发了嘛?[email protected]
      

  19.   

    我用这个<%@ page import="java.util.*, javax.mail.*, javax.mail.internet.*" %>
    <%
      Properties props = new Properties();
      props.put("mail.smtp.host", "你的SMTP服务器");
      Session s = Session.getInstance(props,null);  MimeMessage message = new MimeMessage(s);  InternetAddress from = new InternetAddress("发件人邮件地址");
      message.setFrom(from);
      InternetAddress to = new InternetAddress("收件人邮件地址");
      message.addRecipient(Message.RecipientType.TO, to);
      
      message.setSubject("Test from JavaMail.");
      message.setText("Hello from JavaMail!");  Transport.send(message);
    %>我发的信,怎么标题好象是繁体,内容里的汉字都是乱码~~?????:(
      

  20.   

    没有用户认证功能的发件程序几乎在如今这年代已没什么作用了,除非你自建一个让大家都来发垃圾的SMTP,嘿嘿.
      

  21.   

    给你一个发邮件的例子,分析以下,就会有结果的package bag.mail;
    import java.util.*;
    import javax.mail.*;
    import java.io.*;
    import javax.mail.internet.*;
    import javax.activation.*;public class Email {
      protected String to = null;
      protected String subject = "Email Test";
      protected String body = null;  public Email() {
        super();
      }  public void setTo(String to) {
        this.to = to;
      }  public void setBody(String body) {
    this.body = body;
      }  public void sendmail() {
        try
        {
    String host = "smtp.163.net";
    String from = "your name";
    String to = "other email address";
    String username = "your username";
    String password = "your password";
    this.body = "This is a test"; SmtpAuth sa=new SmtpAuth();
    sa.getuserinfo(username,password);
    Session session;
    MimeMessage message;
    Properties props = System.getProperties();
    props.put("mail.smtp.auth","true");
    props.put("mail.smtp.host", host);
    session = Session.getInstance(props, sa);
    session.setDebug(true);
    message = new MimeMessage(session);
    message.setFrom(new InternetAddress(from));
    message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
    message.setSubject(subject);
    MimeBodyPart mbp = new MimeBodyPart();
    mbp.setText(body);
    Multipart mp = new MimeMultipart();
    mp.addBodyPart(mbp);
    message.setContent(mp);
    message.setSentDate(new java.util.Date());
    Transport transport = session.getTransport("smtp");
    transport.connect("smtp.163.net",username,password);
    transport.send(message);
        }
        catch (MessagingException e) {
    System.out.println("error" + e.getMessage());
        }
      }  class SmtpAuth extends javax.mail.Authenticator {
        private String user,password;
        public void getuserinfo(String getuser,String getpassword){
          user=getuser;
          password=getpassword;
        }
        protected javax.mail.PasswordAuthentication getPasswordAuthentication(){
          return new javax.mail.PasswordAuthentication(user,password);
        }
      }
    }