Java邮件getInputStream左侧收件人

时间:2012-05-07 09:15:48

标签: inputstream javamail

我正在用javamail编写邮件发送方法。 我无法理解为什么我得到和错误为:收件人没有设置。 这是我的代码:

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);
    }

正如我在调试模式中的评论中写的那样,我可以看到收件人在第一部分中正确设置了,我将它转换为InputStream到第二种方法,我再也找不到收件人了。

1 个答案:

答案 0 :(得分:0)

我无法调试您的代码,但也许这些示例可以帮助您: 有关通过/从gmail发送/接收邮件的示例

http://famulatus.com/component/search/?searchword=gmail&searchphrase=all&Itemid=9999