0

我正在用 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 到第二种方法,我再也找不到收件人了。

4

1 回答 1

0

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

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

于 2012-05-07T10:02:38.757 回答