我们老板想到做一个  只能通过一个邮件地址发送邮件的功能,请问这个功能要怎么实现,求思路!!

解决方案 »

  1.   

    用mail.jar实现,搜一下很多的。
      

  2.   


    //用mail.jar和activation.jar发送邮件
    //需要下载一个Mail.jar包和activation.jarMailSenderInfo.javapackage com.util.mail;import java.util.Properties;
    public class MailSenderInfo {
    // 发送邮件的服务器的IP和端口
     private String mailServerHost;
     private String mailServerPort = "25";
     // 邮件发送者的地址
     private String fromAddress;
     // 邮件接收者的地址
     private String toAddress;
     // 登陆邮件发送服务器的用户名和密码
     private String userName;
     private String password;
     // 是否需要身份验证
     private boolean validate = false;
     // 邮件主题
     private String subject;
     // 邮件的文本内容
     private String content;
     // 邮件附件的文件名
     private String[] attachFileNames;
     
     public Properties getProperties(){
        Properties p = new Properties();
        p.put("mail.smtp.host", this.mailServerHost);
        p.put("mail.smtp.port", this.mailServerPort);
        p.put("mail.smtp.auth", validate ? "true" : "false");
        return p;
     }
     public String getMailServerHost() {
      return mailServerHost;
     }
     public void setMailServerHost(String mailServerHost) {
      this.mailServerHost = mailServerHost;
     } 
     public String getMailServerPort() {
      return mailServerPort;
     } 
     public void setMailServerPort(String mailServerPort) {
      this.mailServerPort = mailServerPort;
     } 
     public boolean isValidate() {
      return validate;
     } 
     public void setValidate(boolean validate) {
      this.validate = validate;
     } 
     public String[] getAttachFileNames() {
      return attachFileNames;
     } 
     public void setAttachFileNames(String[] fileNames) {
      this.attachFileNames = fileNames;
     } 
     public String getFromAddress() {
      return fromAddress;
     }
     public void setFromAddress(String fromAddress) {
      this.fromAddress = fromAddress;
     } 
     public String getPassword() {
      return password;
     } 
     public void setPassword(String password) {
      this.password = password;
     } 
     public String getToAddress() {
      return toAddress;
     }
     public void setToAddress(String toAddress) {
      this.toAddress = toAddress;
     }
     public String getUserName() {
      return userName;
     } 
     public void setUserName(String userName) {
      this.userName = userName;
     } 
     public String getSubject() {
      return subject;
     } 
     public void setSubject(String subject) {
      this.subject = subject;
     } 
     public String getContent() {
      return content;
     } 
     public void setContent(String textContent) {
      this.content = textContent;
     }

    MyAuthenticator.javapackage com.util.mail;
     
    import javax.mail.*;
     
    public class MyAuthenticator extends Authenticator{
      String userName=null;
      String password=null;
       
      public MyAuthenticator(){
      }
      public MyAuthenticator(String username, String password) { 
        this.userName = username; 
        this.password = password; 
      } 
      protected PasswordAuthentication getPasswordAuthentication(){
        return new PasswordAuthentication(userName, password);
      }
    }  SimpleMailSender.java package com.util.mail;import java.util.Date;
    import java.util.Properties;
    import javax.mail.Address;
    import javax.mail.BodyPart; 
    import javax.mail.Message; 
    import javax.mail.MessagingException; 
    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 SimpleMailSender{public boolean sendTextMail(MailSenderInfo mailInfo) {
    // 判断是否需要身份认证
     MyAuthenticator authenticator = null;
     Properties pro = mailInfo.getProperties();
     if (mailInfo.isValidate()) {
    // 如果需要身份认证,则创建一个密码验证器
     authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
     }
     // 根据邮件会话属性和密码验证器构造一个发送邮件的session
     Session sendMailSession = Session.getDefaultInstance(pro,authenticator); 
     try { 
     // 根据session创建一个邮件消息 
     Message mailMessage = new MimeMessage(sendMailSession); 
     // 创建邮件发送者地址 
     Address from = new InternetAddress(mailInfo.getFromAddress()); 
     // 设置邮件消息的发送者 
     mailMessage.setFrom(from); 
     // 创建邮件的接收者地址,并设置到邮件消息中 
     Address to = new InternetAddress(mailInfo.getToAddress());
     mailMessage.setRecipient(Message.RecipientType.TO,to);
     // 设置邮件消息的主题
     mailMessage.setSubject(mailInfo.getSubject()); 
     // 设置邮件消息发送的时间 
     mailMessage.setSentDate(new Date());
     // 设置邮件消息的主要内容 
     String mailContent = mailInfo.getContent();
     mailMessage.setText(mailContent); 
     // 发送邮件 
     Transport.send(mailMessage);
     return true; 
     } catch (MessagingException ex) { 
       ex.printStackTrace(); 
     } 
     return false; 
      } 
      public static boolean sendHtmlMail(MailSenderInfo mailInfo){ 
     // 判断是否需要身份认证 
     MyAuthenticator authenticator = null;
     Properties pro = mailInfo.getProperties();
     //如果需要身份认证,则创建一个密码验证器  
     if (mailInfo.isValidate()) { 
     authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
     } 
     // 根据邮件会话属性和密码验证器构造一个发送邮件的session 
     Session sendMailSession = Session.getDefaultInstance(pro,authenticator); 
     try { 
     // 根据session创建一个邮件消息 
     Message mailMessage = new MimeMessage(sendMailSession);
     // 创建邮件发送者地址 
     Address from = new InternetAddress(mailInfo.getFromAddress());
     // 设置邮件消息的发送者 
     mailMessage.setFrom(from);
     // 创建邮件的接收者地址,并设置到邮件消息中 
     Address to = new InternetAddress(mailInfo.getToAddress()); 
     // Message.RecipientType.TO属性表示接收者的类型为TO 
     mailMessage.setRecipient(Message.RecipientType.TO,to); 
     // 设置邮件消息的主题 
     mailMessage.setSubject(mailInfo.getSubject()); 
     // 设置邮件消息发送的时间 
     mailMessage.setSentDate(new Date()); 
     // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象 
     Multipart mainPart = new MimeMultipart(); 
     // 创建一个包含HTML内容的MimeBodyPart 
     BodyPart html = new MimeBodyPart(); 
     // 设置HTML内容 
     html.setContent(mailInfo.getContent(), "text/html; charset=utf-8"); 
     mainPart.addBodyPart(html); 
     // 将MiniMultipart对象设置为邮件内容
     mailMessage.setContent(mainPart);
     // 发送邮件
     Transport.send(mailMessage);
     return true;
     } catch (MessagingException ex) {
     ex.printStackTrace();
    }
     return false;
     }
    } test.java package com.util.mail;public class test { 
     public static void main(String[] args) {
      // TODO Auto-generated method stub
      //这个类主要是设置邮件  
      MailSenderInfo mailInfo = new MailSenderInfo();
      mailInfo.setMailServerHost("smtp.163.com"); 
      mailInfo.setMailServerPort("25"); 
      mailInfo.setValidate(true); 
      mailInfo.setUserName("[email protected]"); 
      mailInfo.setPassword("178563");//您的邮箱密码 
      mailInfo.setFromAddress("[email protected]"); 
     // mailInfo.setToAddress("[email protected]"); 
      mailInfo.setToAddress("[email protected]");
      mailInfo.setSubject("设置邮箱标题如http://www.shuiguoai.com 水果爱"); 
      mailInfo.setContent("设置邮箱内容如http://www.shuiguoai.com 水果爱真心话大冒险"); 
       //这个类主要来发送邮件  
      SimpleMailSender sms = new SimpleMailSender();
     sms.sendTextMail(mailInfo);//发送文体格式 
     sms.sendHtmlMail(mailInfo);//发送html格式 
     }} 
      

  3.   


    恩,你这个方法我懂得发。我是想说,比如有一台服务器,我们要发邮件出去,一定要用这台服务器上的(比如[email protected])这个邮箱地址发,否则用其他的邮箱地址发不出去,怎么去控制只能用一个地址发,感觉这好像不是代码的问题,更像是路由或什么的问题
      

  4.   

    百度javamail,代码多的是,记得导入那几个jar。。 
      

  5.   

    不是上面大家说的简单的发邮件。现在还有个问题就是 我们公司是没有现成的邮箱地址,应该这个要自己做一个,比如要做个[email protected]的邮件地址,然后发送邮件一定要用这个发,不然发不出去。那这个邮箱地址又要如何实现啊,我试了下james,好像可以自己做个邮件地址也不知道对不对?望高人指点
      

  6.   

    首先,你用java的话,技术上可以选择jms,这个非常好用。其次,满足你的需求。这也不难。
      

  7.   

    你要基于Socket自己实现以下,然后在里面加以限制就可以了
    自己实现SMTP协议就可以,达到你的要求,很容易的!
    可以看我的博客,
      

  8.   


    有域名可以這樣,用google或者qq提供的免費域名郵箱服務,這個要去申請。也就是說,讓他們托管你的郵件服務器(其實是他們提供的服務)。