最近在做个东西 ,,需要与邮件绑定 ,以前也一直没用过javaMail做实验 今天做了下 都一天都没做起来 网上例子很多但都不实用啊  希望大家帮忙  我的样例如下:
   <html>
<head>
    <title>JavaMail.html</title>
<meta http-equiv="Content-Type" content="text/html;charset=GB2312">
</head>
<body><h2>利用JavaMail来发送电子邮件</h2><form name="form" method="POST" action="JavaMail.jsp">
    <p>寄信人:<input type="text" name="From" size="35" maxlength="35"></p>
    <p>收信人:<input type="text" name="To" size="35" maxlength="35"></p>
    <p>主题: <input type="text" name="Subject" size="35" maxlength="35"></p>
    <p>内容:<textarea name="Message" cols="30" rows="5"></textarea></p>
    <input type="submit" value="发送">
    <input type="reset" value="清除">
</form>
</body>
</html>package com.yang;import javax.mail.*;
import java.util.*;public class PopupAuthenticator extends Authenticator {     String username, password;    public PopupAuthenticator(String username, String password) {
        this.username = username;
        this.password = password;
    }    public PasswordAuthentication getPasswordAuthentication() {         return new PasswordAuthentication(username, password);  
        }
}
<%@ page import="javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%@ page import="javax.activation.*" %>
<%@ page import="java.util.*,java.io.*" %>
<%@ page contentType="text/html;charset=GB2312" %><html>
<head>
  <title>JavaMail.jsp</title>
</head>
<body><h2>利用JavaMail来传送电子邮件 </h2>
<%    InternetAddress[] address = null;    request.setCharacterEncoding("GB2312");    Authenticator auth = (Authenticator)
    new com.yang.PopupAuthenticator("[email protected]","swtzx19870719");    String mailserver   = "smtp.qq.com";
    String From         = request.getParameter("From");
    String to           = request.getParameter("To");
    String Subject      = request.getParameter("Subject");
    String messageText  = request.getParameter("Message");    boolean sessionDebug = false;
    
try {  // 设定所要用的Mail 服务器和所使用的传输协议
  java.util.Properties props = System.getProperties();
  props.put("mail.host",mailserver);
  props.put("mail.transport.protocol","smtp");
  
  // 产生新的Session 服务
  javax.mail.Session mailSession = javax.mail.Session.getDefaultInstance(props,null);
  mailSession.setDebug(sessionDebug);
  Message msg = new MimeMessage(mailSession);
  
  // 设定传送邮件的发信人
  msg.setFrom(new InternetAddress(From));
  
  // 设定传送邮件至收信人的信箱
  address = InternetAddress.parse(to,false);
  msg.setRecipients(Message.RecipientType.TO, address);
  
  // 设定信中的主题 
  msg.setSubject(Subject);
  // 设定送信的时间
  msg.setSentDate(new Date());
  
  // 设定传送信的MIME Type
  msg.setText(messageText);  // 送信
  Transport.send(msg);  out.println("邮件已顺利传送");
    
}
    catch (MessagingException mex) {      mex.printStackTrace();
    }
 
%></body>
</html>我现在就假设 用QQ 服务器发送 用户 [email protected] 向 [email protected] 进行发送 ,,但怎么做都是错  我实在不会搞了 忘大家指点 其中邮件服务器要怎么设  我的代码写的是不是也有问题 要怎么改 大家帮忙  我系统急用~~
以下是打印堆栈错误信息
com.sun.mail.smtp.SMTPSendFailedException: 503 Error: need EHLO and AUTH first ! at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:959)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:583)
at javax.mail.Transport.send0(Transport.java:169)
at javax.mail.Transport.send(Transport.java:98)
at org.apache.jsp.JavaMail_jsp._jspService(JavaMail_jsp.java:116)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【swt570481062】截止到2008-08-04 00:34:46的历史汇总数据(不包括此帖):
    发帖的总数量:7                        发帖的总分数:420                      每贴平均分数:60                       
    回帖的总数量:16                       得分贴总数量:5                        回帖的得分率:31%                      
    结贴的总数量:4                        结贴的总分数:330                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:3                        未结的总分数:90                       
    结贴的百分比:57.14 %               结分的百分比:78.57 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    楼主加油

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=swt570481062
      

  2.   

    首先要引mail.jar和activation.jar包下载地址为:
    javamail:http://java.sun.com/products/javamail/downloads/index.htmlJAF:http://java.sun.com/javase/technologies/desktop/javabeans/jaf/downloads/index.html下载后把.zip解压,然后把mail.jar和activation.jar复制到项目下的web-info/lib下值得一说的是java ee 5和这个mail.jar和activation.jar有冲突这个类在j2ee1.4下运行完全没有问题,但是如果在java ee 5下运行会报类找不到的错误,解决办法就是把myeclipse下的java ee 5的mail.jar和activation.jar干掉package javamail;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;
    public class SendMail { private MimeMessage mimeMsg; // MIME邮件对象 private Session session; // 邮件会话对象 private Properties props; // 系统属性 private boolean needAuth = false; // smtp是否需要认证 private String username = ""; // smtp认证用户名和密码 private String password = ""; private Multipart mp; // Multipart对象,邮件内容,标题,附件等内容均添加到其中后再生成MimeMessage对象 /**
      * 
      * 
      * 
      */ public SendMail() {//  setSmtpHost(getConfig.mailHost);// 如果没有指定邮件服务器,就从getConfig类中获取
      setSmtpHost("smtp.126.com");// 如果没有指定邮件服务器,就从getConfig类中获取  createMimeMessage(); } public SendMail(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>";  SendMail themail = new SendMail("smtp.126.com");//smtp服务器  themail.setNeedAuth(true);  if (themail.setSubject("Title") == false)//标题
       return;  if (themail.setBody(mailbody) == false)//正文
       return;  if (themail.setTo("[email protected]") == false)//接收方
       return;  if (themail.setFrom("[email protected]") == false)//发送方
       return;  if (themail.addFileAffix("g:\\test.txt") == false)//附件
       return;  themail.setNamePass("mailUsername", "mailPassword");//用户名密码  if (themail.sendout() == false)
       return; }}http://heisetoufa.ggblog.com/341469.html
      

  3.   

    楼上的代码很全
    你的问题好像是没有smtp的权限
      

  4.   

    你这边 设 smtp.126.com  smtp服务器 是根据什么原理的 ??我就这个搞不清  
      

  5.   

    把javamail的jar包导入进来
    下面是我以前写的javamail的例子
    你可以参考一下
    http://blog.csdn.net/yirentianran/archive/2008/04/24/2323652.aspx
      

  6.   

    谢谢啊 ~~~~
    你的 服务器设的是 smtp.163.com 是不是我的 发送和接受人的邮件 都要是163的???