2011-11-09 58 views
0

我正在使用以下代碼向多個用戶發送郵件。 當所有郵件ID都正確或者真實時,一切正常。出現錯誤的郵件標識時出現問題。我添加了一個例外,但我希望當只有一個郵件標識錯誤時,郵件將被髮送給其他用戶。JavaMail失敗地址問題

任何幫助appreaciated。我需要在同一封郵件中發送所有用戶。

public void sendEmail(
     final Map<String, Object> model, 
     final String mailTemplate, 
     final List<User> toUsers, 
     final List<User> ccUsers, 
     final String attachedFilename, 
     final File attachedFile 
     ) 
{  
    subject = (String)model.get("subject");  
    if(subject==null) 
     subject = Constants.SFTA_DEFAULT_MAIL_SUBJECT; 

    if ((toUsers == null || toUsers.size() == 0) 
    && (ccUsers == null || ccUsers.size() == 0)) 
     return; 

    MimeMessagePreparator messagePreparator = new MimeMessagePreparator() 
    {   
     public void prepare(MimeMessage mimeMessage) throws Exception { 

      boolean multipartMode = false; 
      if ((attachedFilename!=null) 
      && (attachedFilename.length()>0) 
      && (attachedFile!=null)) 
       multipartMode = true; 

      MimeMessageHelper message = new MimeMessageHelper(mimeMessage,multipartMode); 
      message.setFrom(from); 
      message.setTo(getInternetAddress(toUsers)); 
      if (ccUsers!=null) 
      { 
       List<User> ccFinalUsers = new ArrayList<User>(); 
       for(User user:ccUsers) 
       { 
        if(user.getIsActive().equals("Y")) 
         ccFinalUsers.add(user); 

        if(user.equals(toUsers.get(0))) 
         ccFinalUsers.remove(user); 

       } 
       message.setCc(getInternetAddress(ccFinalUsers)); 
      } 
      message.setSubject(subject); 
      message.setSentDate(new Date()); 

      if (multipartMode) 
       message.addAttachment(attachedFilename,attachedFile); 

      String text = VelocityEngineUtils.mergeTemplateIntoString(
        velocityEngine, mailTemplate, model); 

      message.setText(text, true); 
     } 
    };  

    try { 
     mailSender.send(messagePreparator); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 


} 

回答