2012-05-07 54 views
0

我正在用javamail編寫郵件發送方法。 我不明白爲什麼我得到和錯誤:收件人沒有設置。 這是我的代碼:Java郵件getInputStream左收件人

public static void sendMail(String to, String subj, String body, String attachmentName, byte[] attachment, String mime) throws Exception { 
    Properties p = System.getProperties(); 
    Session session = Session.getInstance(p); 
    MimeMessage dummyMessage = new MimeMessage(session); 
    dummyMessage.setFrom(new InternetAddress(LovProvider.getOpzioni().get("mail.address"))); 
    dummyMessage.setSubject(subj); 
    String[] tos = to.split(";"); 
    Address[] tosAddr = new InternetAddress[tos.length]; 
    for (int i = 0; i < tos.length; i++) { 
     tosAddr[i] = new InternetAddress(tos[i]); 
    } 
    dummyMessage.setRecipients(Message.RecipientType.TO, tosAddr); 
    Multipart mp = new MimeMultipart(); 
    MimeBodyPart bp = new MimeBodyPart(); 
    bp.setText(body); 
    mp.addBodyPart(bp); 
    if (attachmentName != null && attachment != null) { 
     DataSource dataSource = new ByteArrayDataSource(attachment, mime); 
     MimeBodyPart attachBodyPart = new MimeBodyPart(); 
     attachBodyPart.setDataHandler(new DataHandler(dataSource)); 
      attachBodyPart.setFileName(attachmentName); 
      mp.addBodyPart(attachBodyPart); 
     } 
     dummyMessage.setContent(mp); 
     //***** DEBUGGING here I find the recipient 
     sendMail(dummyMessage.getInputStream()); 
    } 

    public static void sendMail(InputStream emlFile) throws Exception { 
     Properties props = System.getProperties(); 
     props.put("mail.host", LovProvider.getOpzioni().get("mail.out.host")); 
     props.put("mail.transport.protocol", LovProvider.getOpzioni().get("mail.out.protocol")); 
     props.put("mail." + LovProvider.getOpzioni().get("mail.out.protocol") + ".port", LovProvider.getOpzioni().get("mail.out.port")); 
     Session mailSession = Session.getDefaultInstance(props, PasswordAuthentication.getAuth(LovProvider.getOpzioni().get("mail.out.user"), LovProvider.getOpzioni().get("mail.out.password"))); 
     MimeMessage message = new MimeMessage(mailSession, emlFile); 
     //***** DEBUGGING here I CAN NOT find the recipient 
     Transport.send(message); 
    } 

正如我在調試模式下的評論中寫道,我可以看到在第一部分中正確設置收件人,whant我將它轉換爲的InputStream我無法找到收件人了第二種方法。

+0

我才發現,我應該使用的MimeMessage的writeTo到outputstream比創建一個新的InputStream。 :-) – Tobia

回答

相關問題