一个类
package com.mail;import java.util.Date;
import java.util.Properties;import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
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 String sender = "[email protected]";
private String smtpHost = "smtp.126.com";

private String user = "[email protected]";
private String password = "oubo13423307898";




    private void sendBody(String mailTo, String subject, String information)
    throws Exception, MessagingException {
             Properties prop = new Properties();
             prop.put("mail.smtp.host", smtpHost);// 设置smtp主机
             prop.put("mail.smtp.auth", "true");// 使用smtp身份验证
             prop.put("mail.smtp.user", user);
             prop.put("mail.smtp.password", password);
             Session session = Session.getInstance(prop, new Authenticator() {
                         public PasswordAuthentication getPasswordAuthentication() {
                                    return new PasswordAuthentication(sender, password);
                         }
             });
             // 获得邮件会话对象
             MimeMessage message = new MimeMessage(session);
             message.setFrom(new InternetAddress(sender));
             // 设置收件人地�?
             message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
             // 设置邮件主题
             message.setSubject(subject);
             // mail内容部分
             MimeBodyPart part = new MimeBodyPart();
             part.setText(information == null ? "" : information, "UTF-8");
             // 设置邮件格式为html
             part.setContent(information.toString(), "text/html;charset=UTF-8");
             Multipart multipart = new MimeMultipart();
             multipart.addBodyPart(part);// �? Multipart 中增加mail内容部分
             message.setContent(multipart);// 增加 Multipart 到信息体
             message.setSentDate(new Date());// 设置发�?�日�?
             Transport.send(message);// 发�?�邮�? 
    }    public void send(String mailTo, String subject, String information) {
             try {
                      this.sendBody(mailTo, subject, information);
             } catch (Exception e) {
                      e.printStackTrace();
             }
    }}
在写一个action来测试String namemail=request.getParameter("mailQQ");
String title ="aaaaa";
System.out.println("aaaa"+namemail);
SendMail sendm=new SendMail();
String Context=" 行不行";       
  
sendm.send(namemail,title,Context);
return mapping.findForward("ok");jsp页面
<html:html >
<HEAD> <TITLE>注册</TITLE>
<META http-equiv=Content-Type content="text/html; charset=UTF-8">
<META content="MSHTML 6.00.6000.16788" name=GENERATOR>
</HEAD>
<BODY>
<form action="reg.do" method="post">
<input type="text" name="mailQQ" id="mailQQ" />
<html:submit></html:submit>
</form>
</BODY>
</html:html>运行时报错了
javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:319)
at javax.mail.Service.connect(Service.java:169)
at javax.mail.Service.connect(Service.java:118)
at javax.mail.Transport.send0(Transport.java:188)
at javax.mail.Transport.send(Transport.java:118)
at com.mail.SendMail.sendBody(SendMail.java:57)
at com.mail.SendMail.send(SendMail.java:62)
at com.struts.action.mailAction.execute(mailAction.java:26)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
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.   

    126邮箱支持smtp服务吗?先确定一下126邮箱是否支持smpt服务,否则最好使用pop3.
      

  2.   


    import java.util.*;
    import javax.mail.*;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    /**
     *  邮件发送
     * @author Administrator
     *
     */
    public class Email {
    static Log log = LogFactory.getLog(Email.class);
    private String smtphost;  // 发送邮件服务器    
    private String user;  // 邮件服务器登录用户名   
    private String password;  // 邮件服务器登录密码   
    private String from;  // 发送人邮件地址
    private String to;  // 接受人邮件地址   
    private String subject;  // 邮件标题   
    private String content;  // 邮件内容
    public Email(){}

    public Email(String from ,String password,String to_mail,String subject,String content){
    this.from = from;
    this.password = password;
    String []smt = from.split("@");
    this.user = smt[0];
    this.smtphost = "smtp."+smt[1];
    this.to = to_mail;
    this.subject = subject;
    this.content = content;
    }
    public static void main(String[] args) {
    String from = "[email protected]";
    String password = "password";
    String to_e_mail = "[email protected]";
    String content = "邮件内容!";
    Email e = new Email(from,password,to_e_mail,"主题1",content);
    int r=e.sentMail();
    System.out.println(r);
    }
    /**
     * 发邮件
     * @return int
     */
    public int sentMail(){
    int iRes=99999;
    try {   
    Properties props = new Properties();   
    props.put("mail.smtp.host", smtphost);   
    props.put("mail.smtp.auth","true");   
    Session ssn = Session.getInstance(props, null);  
    MimeMessage message = new MimeMessage(ssn);      
    InternetAddress fromAddress = new InternetAddress(from);   
    message.setFrom(fromAddress);   
    InternetAddress toAddress = new InternetAddress(to);   
    message.addRecipient(Message.RecipientType.TO, toAddress); 
    message.setSubject(subject);   
    message.setText(content);   
    Transport transport = ssn.getTransport("smtp");   
    transport.connect(smtphost, user, password);   
    transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));   
    //transport.send(message);   
    transport.close();   
    System.out.println("邮件发送成功!");
    iRes = 0;
    }catch(Exception e){    
    log.info("邮件发送异常!"+e);
    }
    return iRes;
    }
    }
    你试试
      

  3.   

    package com.jiyade.servlet;import java.util.Date;
    import java.util.Properties;import javax.activation.DataHandler;
    import javax.mail.Authenticator;
    import javax.mail.Message;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import javax.mail.util.ByteArrayDataSource;import sun.misc.BASE64Encoder;/**
     * 
     * @author CARRIER 设置好 to 收件人 subject 主题 content 正文
     */public class JavaMail {
    private static String SMTPHOST = "mail.janyjewelry.com";
    private static String USERNAME = "[email protected]";
    private static String PASSWORD = "jany1968";
    private static String FROM = "[email protected]";

    // private static String SMTPHOST="test.gumeipost.com";   
    //    private static String USERNAME="[email protected]";   
    //    private static String PASSWORD="carrier";   
    //    private static String FROM="[email protected]";  private static String FROMNAME = "吉雅德客户";
    private final String MAIL_SMTP_HOST = "mail.smtp.host";
    private final String MAIL_SMTP_AUTH = "mail.smtp.auth";
    private String to;
    private String subject;
    private String content; public JavaMail() {
    // TODO Auto-generated constructor stub
    } public String getTo() {
    return to;
    } public void setTo(String to) {
    this.to = to;
    } public String getSubject() {
    return subject;
    } public void setSubject(String subject) {
    this.subject = subject;
    } public String getContent() {
    return content;
    } public void setContent(String content) {
    this.content = content;
    } public void sendMail() {
    Properties props = new Properties();
    props.put("mail.smtp.host", SMTPHOST);
    props.put("mail.smtp.auth", "true");
    // 建立会话
    Session session = null;
    try { Authenticator auth = new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
    return new PasswordAuthentication(USERNAME, PASSWORD);
    }
    };
    session = Session.getInstance(props, auth);
    // 设置调试
    // session.setDebug(true);
    System.out.println("与" + SMTPHOST + "成功建立会话");
    // 建立消息
    MimeMessage message = new MimeMessage(session);
    message.setFrom(new InternetAddress(FROM, FROMNAME));
    message.setSentDate(new Date());
    // 加载收件人地址
    InternetAddress toAddress = new InternetAddress(to);
    message.addRecipient(Message.RecipientType.TO, toAddress);
    // 加载主题
    BASE64Encoder enc = new BASE64Encoder();
    message.setSubject("=?GBK?B?" + enc.encode(subject.getBytes()) + "?=");
    // 加载正文内容(带HTML标签)
    message.setDataHandler(new DataHandler(new ByteArrayDataSource(
    content, "text/html")));
    // 建立发送
    Transport transport = session.getTransport("smtp");
    transport.connect(SMTPHOST, USERNAME, PASSWORD);
    transport.sendMessage(message, message
    .getRecipients(Message.RecipientType.TO)); // 关闭发送
    transport.close();
    } catch (Exception e) {
    e.getStackTrace();
    }
    System.out.println("给" + to + "的邮件,发送成功"); } public static void send(String toName, String title, String content) {

    JavaMail mail = new JavaMail();
    mail.setTo(toName);
    mail.setSubject(title);
    mail.setContent(content);
    mail.sendMail();
    System.out.print("发送成功。");
    }
    }
    直接调用JavaMail send=new JavaMail ();send.send(邮箱名, 标题, 内容);
    试一下