Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
图像在java mail中转换为.bin文件_Java_Tomcat_Jakarta Mail - Fatal编程技术网

图像在java mail中转换为.bin文件

图像在java mail中转换为.bin文件,java,tomcat,jakarta-mail,Java,Tomcat,Jakarta Mail,我试图使用javamail API发送一封包含html内容[包括图像]的邮件,当我尝试通过单元测试发送邮件时,它会正常工作,这意味着html内容被正确传递,但当我在应用程序中使用相同的代码[在tomcat服务器中运行时],我将所有图像文件作为bin文件获取为ATT00005.bin&以此类推。。 这是我的密码 public void sendMail(String userName, String test_name, String toaddress, String c

我试图使用javamail API发送一封包含html内容[包括图像]的邮件,当我尝试通过单元测试发送邮件时,它会正常工作,这意味着html内容被正确传递,但当我在应用程序中使用相同的代码[在tomcat服务器中运行时],我将所有图像文件作为bin文件获取为ATT00005.bin&以此类推。。 这是我的密码

public void sendMail(String userName, String test_name, String toaddress,
            String ccaddress, String status, int total_marks, String msg,
            String filepath) throws MessagingException, AddressException {  
    Properties props = System.getProperties();
        props.put("mail.smtp.host", SMTP_HOST_NAME);
        Session session = Session.getInstance(props, null);
        Message message = new MimeMessage(session);
        message.setFrom(new InternetAddress(from));

        InternetAddress ccaddressTo = new InternetAddress(ccaddress);
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(toaddress));
        MimeMultipart multipart = new MimeMultipart("related");
        BodyPart messageBodyPart = new MimeBodyPart();

            String temp1 = "<HTML><BODY><center><TABLE border=0><TR><TD ><img src=\"cid:image1\" border=0></TD>";
            String temp2 = "</TR><TR><TD><table width=100%  border=0><tr align=center><td><img src=\"cid:image2\" "
                    + "border=0 width=340 height=32></td>";
            String temp3 = "<tr ></tr ><td align=center>Awarded To   </td><tr ></tr ><td align=center>"
                    + userName
                    + "</td><tr ></tr ><td align=center> <img src=\"cid:image3\" border=0 width=270 height=32> </td>";
            String temp4 = "</tr> </tr > <td align=center>TEST CERTIFICATION PROGRAM    </td>  </tr><tr><td align=\"center\">Test name : "
                    + test_name
                    + "</td></tr></table></td></tr><TR><TD>"
                    + "<img src=\"cid:image4\" border=0 ></TD></TR> </TABLE> </center> </body></HTML>";

            String htmlText = temp1 + temp2 + temp3 + temp4;
            messageBodyPart.setContent(htmlText, "text/html; charset=utf-8");
            multipart.addBodyPart(messageBodyPart);

            messageBodyPart = new MimeBodyPart();
            DataSource fds1 = new FileDataSource(filepath + "b1.jpg");
            messageBodyPart.setDataHandler(new DataHandler(fds1));
            messageBodyPart.setHeader("Content-ID", "<image1>");
            multipart.addBodyPart(messageBodyPart);

            messageBodyPart = new MimeBodyPart();
            DataSource fds2 = new FileDataSource(filepath + "cert.gif");
            messageBodyPart.setDataHandler(new DataHandler(fds2));
            messageBodyPart.setHeader("Content-ID", "<image2>");
            multipart.addBodyPart(messageBodyPart);

            messageBodyPart = new MimeBodyPart();
            DataSource fds3 = new FileDataSource(filepath + "cer2.gif");
            messageBodyPart.setDataHandler(new DataHandler(fds3));
            messageBodyPart.setHeader("Content-ID", "<image3>");
            multipart.addBodyPart(messageBodyPart);

            messageBodyPart = new MimeBodyPart();
            DataSource fds4 = new FileDataSource(filepath + "b3.jpg");
            messageBodyPart.setDataHandler(new DataHandler(fds4));
            messageBodyPart.setHeader("Content-ID", "<image4>");

            multipart.addBodyPart(messageBodyPart);

        } else {
            BodyPart messageBodyPart = new MimeBodyPart();
            multipart.addBodyPart(messageBodyPart);

            messageBodyPart.setText("Hello " + userName + ",\n" + msg);

        }
        message.setContent(multipart);

        // Send the message
        Transport transport = session.getTransport("smtp");
        transport.connect(SMTP_HOST_NAME, null, null);
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
}
public void sendMail(字符串用户名、字符串测试名称、字符串地址、,
字符串C地址、字符串状态、整数总标记、字符串消息、,
字符串文件路径)引发MessaginException,AddressException{
Properties props=System.getProperties();
props.put(“mail.smtp.host”,smtp\u主机名);
Session Session=Session.getInstance(props,null);
Message Message=新的mimessage(会话);
message.setFrom(新的InternetAddress(from));
InternetAddress ccaddressTo=新的InternetAddress(ccaddress);
message.addRecipient(message.RecipientType.TO,新的InternetAddress(toaddress));
MimMultipart multipart=新的MimMultipart(“相关”);
BodyPart messageBodyPart=新的MimeBodyPart();
字符串temp1=“”;
字符串temp2=“”;
String temp3=“授予”
+用户名
+ "  ";
String temp4=“测试认证计划测试名称:”
+测试名称
+ ""
+ "   ";
字符串htmlText=temp1+temp2+temp3+temp4;
setContent(htmlText,“text/html;charset=utf-8”);
multipart.addBodyPart(messageBodyPart);
messageBodyPart=新的MimeBodyPart();
DataSource fds1=新文件数据源(filepath+“b1.jpg”);
setDataHandler(新的DataHandler(fds1));
messageBodyPart.setHeader(“内容ID”,即“”);
multipart.addBodyPart(messageBodyPart);
messageBodyPart=新的MimeBodyPart();
DataSource fds2=新文件数据源(filepath+“cert.gif”);
setDataHandler(新的DataHandler(fds2));
messageBodyPart.setHeader(“内容ID”,即“”);
multipart.addBodyPart(messageBodyPart);
messageBodyPart=新的MimeBodyPart();
DataSource fds3=新文件数据源(filepath+“cer2.gif”);
setDataHandler(新的DataHandler(fds3));
messageBodyPart.setHeader(“内容ID”,即“”);
multipart.addBodyPart(messageBodyPart);
messageBodyPart=新的MimeBodyPart();
DataSource fds4=新文件数据源(filepath+“b3.jpg”);
setDataHandler(新的DataHandler(fds4));
messageBodyPart.setHeader(“内容ID”,即“”);
multipart.addBodyPart(messageBodyPart);
}否则{
BodyPart messageBodyPart=新的MimeBodyPart();
multipart.addBodyPart(messageBodyPart);
messageBodyPart.setText(“Hello”+用户名+,\n”+消息);
}
message.setContent(多部分);
//发送消息
传输=session.getTransport(“smtp”);
transport.connect(SMTP\主机\名称,null,null);
transport.sendMessage(message,message.getAllRecipients());
transport.close();
}

我知道有些人在这里问了同样的问题。但我的问题是,当使用junit[或在带有main方法的应用程序中]时,相同的代码仍在工作,但当应用程序在tomcat服务器上运行时,情况就不同了。我做错了什么。提前感谢…

如果不希望系统自动提供名称,则应指定名称:

messageBodyPart = new MimeBodyPart();
DataSource fds1 = new FileDataSource(filepath + "b1.jpg");
messageBodyPart.setDataHandler(new DataHandler(fds1));
messageBodyPart.setHeader("Content-ID", "<image1>");
messageBodyPart.setFileName(filepath + "b1.jpg");            // <= HERE
multipart.addBodyPart(messageBodyPart);
messageBodyPart=new MimeBodyPart();
DataSource fds1=新文件数据源(filepath+“b1.jpg”);
setDataHandler(新的DataHandler(fds1));
messageBodyPart.setHeader(“内容ID”,即“”);

messageBodyPart.setFileName(文件路径+“b1.jpg”);//可能是在tomcat服务器上运行代码时使用了不同的javamail实现吗?我不这么认为,因为我的tomcat服务器中没有任何其他应用程序。更新:通过调试检查,它使用的是相同的JAR!!!!这很有效。但是你能解释一下这里发生了什么,问题是什么吗?请注意,你可以通过在MimeBodyPart上使用attachFile方法来简化这个过程。@SergeBallesta谢谢:)