2

こんにちは、次のコードがあります。

    MimeMessage msg = new MimeMessage(session);
    InternetAddress addressFrom = new InternetAddress("krao346789@gmail.com");
    msg.setFrom(addressFrom);

    InternetAddress[] addressTo = new InternetAddress[sendTo.length];
    for (int i = 0; i < sendTo.length; i++) {
    addressTo[i] = new InternetAddress(sendTo[i]);
    }
    msg.setRecipients(Message.RecipientType.TO, addressTo);

    // Setting the Subject and Content Type
    msg.setSubject(emailSubjectTxt);
    /*Image part*/

    MimeMultipart multipart = new MimeMultipart("related");  

    // first part  (the html)  
    BodyPart messageBodyPart = new MimeBodyPart();  
    String htmlText = "<H1>Hello</H1><img src=\"cid:image\">";  
    messageBodyPart.setContent(htmlText, "text/html");  

    // add it  
    multipart.addBodyPart(messageBodyPart);  

    // second part (the image)  
    messageBodyPart = new MimeBodyPart();  
    String contextPath=request.getContextPath();
    System.out.println("contextpath"+contextPath);
    File contextDir = new File(contextPath);  
    System.out.println("contextDir"+contextDir);
    File emailImage = new File(contextDir, "/images/sample.jpeg"); 
    System.out.println("emailImage"+emailImage);

    DataSource fds = new FileDataSource(emailImage);  
    //System.out.println("fds"+fds.getName());
    messageBodyPart.setDataHandler(new DataHandler(fds));  
    messageBodyPart.setHeader("Content-ID","<image>");  

    // add it  
    multipart.addBodyPart(messageBodyPart);  

    // put everything together  
    msg.setContent(multipart);  
    Transport.send(msg);
}

私が使用するとうまくいきます

 

DataSource fds = new FileDataSource("C:\\images\\sample.jpeg");

   それ以外の

DataSource fds = new FileDataSource(emailImage);

しかし、から画像にアクセスしたいWebContent->images
これを実行すると取得java.lang.NullPointerExceptionします。

4

3 に答える 3

0

Webアプリケーションで使用したい場合。まず、添付ファイルをとしてサーバーにアップロードしてから、InputStreamこれを使用して添付ファイルを作成する必要がありますInputStream

于 2012-10-15T12:53:52.953 に答える
0

images/sample.jpegリソースフォルダーからのものである場合は、これを試してください:

DataSource fds = new FileDataSource(getFileHandle("images/sample.jpeg"));

public static File getFileHandle(String fileName){
       return new File(YourClassName.class.getClassLoader().getResource(fileName).getFile());
}

非静的参照の場合:

return new File(getClass().getClassLoader().getResource(fileName).getFile());
于 2021-02-03T07:06:51.473 に答える