文档是这样写的吗?

我还没写过文档,请问大家,是这样写的吗?

这就是我写发送邮件的那个程序的文档

位置:package com.learndiary.website.action.sendmail

整体描述:实现Runnable接口,运行在后台发送邮件的线程

成员变量:

  private ArrayList userInfoList 订阅了此目标的所有用户

private ArticleInfo articleInfo 需发送的日记

private int goalID 目标goalID

private String userNameOfWriteDiary 写日记用户的用户名

成员方法:

  public String getGoalName() 返回目标的Name

  局部变量:

  goalName = myDB.getGoalNameByID(goalID); 通过goalID返回目标的Name

        

  public void run() 线程里的run方法

  局部变量: 

  EmailAuthenticator mailAuthenticator = new EmailAuthenticator(uername,password); 获得SMTP邮件服务器认证.

  Properties props = System.getProperties();  获得系统属性

  props.put("mail.smtp.host",host); 设置邮件服务器

  props.put("mail.smtp.auth","true"); 设置邮件服务器

  Session session = Session.getInstance(props,(Authenticator)mailAuthenticator); 获得会话

  String toMail = userInfo.getEmail();  获得订阅了此目标用户的邮箱(收信地址)

  String userName = userInfo.getUserName(); 获得订阅了此目标用户的用户名

  Session session = Session.getInstance(props,(Authenticator)mailAuthenticator); 获得会话

  MimeMessage message = new MimeMessage(session);  定义消息

  message.setFrom(new InternetAddress(from)); 设置发信人

  message.addRecipient(Message.RecipientType.TO,new InternetAddress(toMail)); 设置收信人

  message.setSubject("学习日记您订阅的目标日记"); 设置消息主题

  message.setText("您好!"+userName+bodyText); 设置消息内容

  transport.connect(host,uername,password); 链接SMTP邮件服务器

  transport.sendMessage(message,message.getAllRecipients()); 发送消息

  transport.close(); 关闭连接

增加订阅邮件功能已完成

我把发送邮件的原代码贴出来

public class ToSendMailOfThread implements Runnable{

private ArrayList userInfoList = null;

private ArticleInfo articleInfo=null;

private int goalID ;

private String userNameOfWriteDiary = null;

    ToSendMailOfThread(ArrayList userInfoList,ArticleInfo articleInfo,int goalID,String userNameOfWriteDiary){

    this.userInfoList = userInfoList;

this.articleInfo = articleInfo;

this.goalID = goalID;

this.userNameOfWriteDiary = userNameOfWriteDiary;

    }

 public String getGoalName() {

   String goalName =null;

  try{

LearnDiaryDB myDB = new LearnDiaryDB();

goalName = myDB.getGoalNameByID(goalID);

}catch (Exception e){  

e.printStackTrace();

return goalName;

     }

     return goalName;

 }

 public void run(){

  String host = "smtp.126.com";

  String from = "learndiary@126.com";

  String uername = "learndiary";

  String password = "123456";

  UserInfo userInfo = null;

  String goalName = getGoalName();

  java.sql.Timestamp now = new java.sql.Timestamp(System.currentTimeMillis());

  StringBuffer bodyTextBuffer = new StringBuffer() ;

       bodyTextBuffer.append("\n");

   bodyTextBuffer.append("关于学习目标:");

   bodyTextBuffer.append(goalName);

   bodyTextBuffer.append("\n");

   bodyTextBuffer.append(userNameOfWriteDiary);

   bodyTextBuffer.append(" 在 ");

   bodyTextBuffer.append(now);

   bodyTextBuffer.append(" 写了如下日记: \n");

       bodyTextBuffer.append("---------------------------------------------------------------- \n");

   bodyTextBuffer.append("标题: ");

   bodyTextBuffer.append(articleInfo.getArticleName());

   bodyTextBuffer.append("\n");

   bodyTextBuffer.append("内容: ");

   bodyTextBuffer.append(articleInfo.getArticleText());

   bodyTextBuffer.append("\n");

   bodyTextBuffer.append("相关资源: ");

   bodyTextBuffer.append(articleInfo.getArticleResource());

   bodyTextBuffer.append("\n");

   bodyTextBuffer.append("---------------------------------------------------------------- \n");

   bodyTextBuffer.append("欢迎常来学习日记!  http://www.learndiary.com");

   bodyTextBuffer.append("\n");

   String bodyText = bodyTextBuffer.toString();

   EmailAuthenticator mailAuthenticator = new EmailAuthenticator(uername,password);

   Properties props = System.getProperties();

   props.put("mail.smtp.host",host);

   props.put("mail.smtp.auth","true");

       Iterator iterator = userInfoList.iterator();

       while(iterator.hasNext()){

       userInfo=(UserInfo)iterator.next();

   String toMail = userInfo.getEmail();

   String userName = userInfo.getUserName();

         try{

Session session = Session.getInstance(props,(Authenticator)mailAuthenticator);

MimeMessage message = new MimeMessage(session);

message.setFrom(new InternetAddress(from));

message.addRecipient(Message.RecipientType.TO,new InternetAddress(toMail));

message.setSubject("学习日记您订阅的目标日记");

message.setText("您好!"+userName+bodyText);

message.saveChanges();

Transport transport = session.getTransport("smtp");

transport.connect(host,uername,password);

transport.sendMessage(message,message.getAllRecipients());

transport.close();

//System.out.println("已发送一封邮件:"+toMail);

       } catch (Exception e){

  e.printStackTrace();

       }

   }//end of while

  }//end of run()

}

订阅邮件功能的工作进度

编写代码已经完成,现正在完善文挡和写解决问题的过程的日记.

按大兴的建议,参照大富翁论坛。设计情况大概是这样:进入"显示目标内容"前先判断用户是否订阅了这个目标,没订就显示"订阅邮件",否则显示"取消邮件"。用户提交日记后,日记存入数据库后显示一个页面"订阅这个目标的用户有***",而发送邮件由后台处理,发送邮件的确比较费时间。为了试验申请了N个邮箱....

呵呵,今晚睡觉

增加订阅邮件设计方案

参考了大兴的意见

http://www.learndiary.com/disDiaryContentAction.do?goalID=33

http://www.learndiary.com/disDiaryContentAction.do?goalID=67

增加订阅邮件的功能分析设计如下:

(1)把订阅的链接放在“显示目标内容” 这个页面上,功能为设计两个:"订阅目标" "退订目标"

(2)保存订阅信息: 在数据库中单独建一个表(名为usermailgoal)保存“用户ID---目标ID”的订阅关系,涉及到的属性还有订阅的时间,如果用户退订了,则在数据库中删除这条记录;

(3)用户提交日记:用户提交日记后,一方面把日记存入数据库,另一方面则向订阅了对应目标的用户发出电子邮件;过程应该是这样的: 以目标ID为关键搜索usermailgoal表,搜索到用户ID,再根据用户ID得到对应的邮件地址,生成发送邮件地址列表,这样就可以把邮件 发出去了;然后,把发送情况告知写日记的用户,再按原来的流程回到日记列表页面;

第(3)个是大兴的意见,我个人的设计是这样的: 用户提交日记后,把日记存入数据库后就回到日记列表页面,发出电子邮件则由后台线程来处理,而不是等到邮件发出去了才回到日记列表页面,因为如果要发送很多,例如十几到几十封邮件(即使是只有几封)都是很费时的,这样用户会觉得系统得很慢,另外发送邮件过程对于用户来讲透明为好,如果想知道给哪些人发了邮件,则可通过"检索"看哪些用户订阅了这个目标.发送情况如有错误则写入错误日志文件.  

请大家多提意见.