现在用netbeans建了个java应用程序(新建项目/java/java应用程序/),是发邮件的(用到两个包activation.jar和mail.jar),建好工程后加入下面的代码,运行可以发邮件到设定的邮箱:两个.java文件
main.java:package javamail;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;public class Main {
    public static void main(String[] args) throws Exception {
        String host = "smtp.sina.com";//发送服务器
        String from = "发送的";
        String to = "接受的";        Properties props = System.getProperties();
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.auth", "true");
        MyAuthenticator myauth =new MyAuthenticator("邮箱名","邮箱密码");
        Session session = Session.getDefaultInstance(props,myauth);
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
        message.setSubject("test");
        message.setText("testtsetss");
        message.saveChanges();
        Transport.send(message);
    }
}
另外一个文件:MyAuthenticator.java:
package javamail;
import javax.mail.*;public class MyAuthenticator extends javax.mail.Authenticator{
    private String strUser=null;
    private String strPwd=null;
    public MyAuthenticator(String user,String password)
    {
        this.strUser =user;
        this.strPwd = password;
    }
    protected PasswordAuthentication getPasswordAuthentication()
    {
        return new PasswordAuthentication(strUser,strPwd);
    }}这个可以发,可是我又/新建项目/java web/web应用程序,基于JSF的,拖一个button后在里面添加处理,把我上面的代码发进去,  
  public String button1_action() {
         String host = "smtp.sina.com";
        String from = "发";
        String to = "到";
try{
        Properties props = System.getProperties();
        props.put("mail.smtp.host", host);
        props.put("mail.smtp.auth", "true");
        MyAuthenticator myauth =new MyAuthenticator("邮箱","密码");
        Session session = Session.getDefaultInstance(props,myauth);
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));
        message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
        message.setSubject("test");
        message.setText("testtsetss");
        message.saveChanges();
        Transport.send(message);
        return null;
    }catch(Exception ex)
    {
        System.out.println(ex);
    }    return null;
    }
}
运行后,邮箱收不到邮件了,这是什么问题啊,想在web下收发邮件就是不成功?

解决方案 »

  1.   

    请问web下的和纯java应用程序要注意什么?
      

  2.   


    不在netbeans下,其他的也行啊,看web的怎么弄咯
      

  3.   

    好像是说你的发件箱要设置POP服务器什么的.
      

  4.   


    public class SendMail {    private String sender = "[email protected]";    
        private String smtpHost = "smtp.sina.com";
                                
        private String user = "[email protected]";
        private String password = "wdmmssm";
        
        
        
            
        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();
                 }
        }}
      

  5.   


    不用pop的啊,我单个搞成java应用程序的话都不用的,我只要发邮件就可以了,可是在web下就是不知道怎么去应用啊,帮帮忙,试一下
      

  6.   

    请问下在web下怎么用,直接调用SendMail可以吗,我是想在jsp的一个按钮下处理发邮件,可是当我写到它的action中后没有提示什么错误,就是发不到,如果搞成java应用程序的话就可以发
      

  7.   

    点击按钮是提交表单.然后会跳到ACTION. 你在ACTION里面调用send方法就可以了..
     public void send(String mailTo, String subject, String information) 这里面有3个参数, // 设置收件人地址    // 设置邮件主题    // mail内容部分
    很简单的了阿.