2013-03-01 33 views
0

我使用這個類來發送郵件它的工作原理,但現在我想添加附件如何添加它,如果ü可以如何使用sendmail

public static void sendMail(String subject, String body, String toEmail, String ccEmail, String fromMail) 
       throws IOException { 
      Random generator = new Random(); 
      int r = Math.abs(generator.nextInt()); 

      body = body.replaceAll("(\\r|\\n)", ""); 
      body = body.replaceAll("\"", "\\\\\""); 
      body = body.replaceAll("&", "\\\\&"); 
      body = body.replaceAll("©", "\\\\©"); 
      //body = body.replaceAll("> <", ">\\\n<"); 

      if(CommonUtils.emptyString(fromMail)) 
       fromMail = "No Reply <[email protected]>"; 
      else 
       fromMail = "No Reply <"+fromMail+">"; 

      ProcessBuilder processBuilder = new ProcessBuilder(
        ApplicationProperties.MAIL_SENDER_SH_PATH, CommonUtils.getEmptyStringForNull(subject), CommonUtils.getEmptyStringForNull(body), 
        toEmail, ccEmail, String.valueOf(r), fromMail); 
      processBuilder.start(); 
     } 

回答

0

作爲一種思想,如果你需要發送,請幫忙發送附件圖像:使其與base64內聯。

附件取決於使用的庫,使用的郵件服務器等。

0
 MimeBodyPart messageBodyPart = new MimeBodyPart(); 
     File file = new File("somefile.txt"); 
     if (file.exists()) { 
      DataSource source = new FileDataSource("somefile.txt"); 
      messageBodyPart.setDataHandler(new DataHandler(source)); 
      messageBodyPart.setFileName(file.getName()); 
      multipart.addBodyPart(messageBodyPart); 
     } 
0

從你的代碼示例中,我可以告訴您正在使用外部郵件程序發送電子郵件。您創建一個ProcessBuilder並調用操作系統工具發送電子郵件。

我不會使用這個解決方案。首先,它取決於操作系統(在windows上你沒有郵件命令)。其次,這不是有效的;因爲你爲此創建了外部過程(假設發送很多電子郵件)。

而是嘗試使用現有的郵件解決方案在Java中(您將需要:mail.jar和activation.jar)。有了它,您可以直接從您的應用程序發送電子郵件,而不依賴於外部工具。

雖然與郵件 Java庫你可以做你想做的一切,你也可以看看Jodd Email。這是一個小而方便的java郵件庫封裝器,可以幫助您發送電子郵件和附件。正如你可以「用流利的API電子郵件」一節看到的,你可以做到以下幾點:

Email email = Email.create() 
    .from("[email protected]") 
    .to("[email protected]") 
    .subject("test") 
    .addText("Hello!") 
    .addHtml(
     "<html><body><h1>Hey!</h1>" + 
     "<img src='cid:c.png'><h2>Hay!</h2></body></html>") 
    .embed(attachment().bytes(new File("d:\\c.png"))) 
    .attach(attachment().file("d:\\b.jpg")); 

在這個例子中,你可以看到兩種方式下如何附加文件:嵌入他們,使他們出現在HTML內容中,或共同附加。當然,你不必使用流暢的界面,它只是這個庫的一個選項。