Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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-发送电子邮件:image/HTML和PDF附件_Java_Html_Image_Email_Attachment - Fatal编程技术网

Java-发送电子邮件:image/HTML和PDF附件

Java-发送电子邮件:image/HTML和PDF附件,java,html,image,email,attachment,Java,Html,Image,Email,Attachment,谢谢你阅读我的帖子 我需要自动发送包含以下内容的电子邮件: 公司标志(图像) HTML消息 PDF附件 我无法在电子邮件中正确显示图像,也无法通过电子邮件客户端“正确管理”PDF 案例1 (参见下面的代码)具有multipart=新的MimeMultipart(“混合”) PDF附件由电子邮件客户端正确管理: 电子邮件客户端中会出现一个小回形针,表示电子邮件有附件, PDF附件的大小也会出现, 等等 徽标不会正确显示在电子邮件的顶部(在HTML代码中),而是显示在电子邮件的末尾 案例2

谢谢你阅读我的帖子

我需要自动发送包含以下内容的电子邮件:

  • 公司标志(图像)
  • HTML消息
  • PDF附件
我无法在电子邮件中正确显示图像,也无法通过电子邮件客户端“正确管理”PDF

案例1 (参见下面的代码)具有
multipart=新的MimeMultipart(“混合”)

  • PDF附件由电子邮件客户端正确管理: 电子邮件客户端中会出现一个小回形针,表示电子邮件有附件, PDF附件的大小也会出现, 等等
  • 徽标不会正确显示在电子邮件的顶部(在HTML代码中),而是显示在电子邮件的末尾
案例2 (参见下面的代码)当
multipart=new MimeMultipart(“相关”)

这是相反的:

  • 图像显示在电子邮件的顶部,它应该在那里
  • 但是电子邮件客户端没有正确处理PDF附件(主窗口中没有回形针,“附件大小未知”,等等)
我经常收到包含徽标和PDF附件的电子邮件(和我们大多数人一样)

我注意到(在这些电子邮件的消息源中)通常有两部分:一部分是多部分/混合的,另一部分是多部分/相关的

我没有设法写的代码,标志和附件都妥善处理的电子邮件客户端

下面您可以找到我已经编写的代码

谢谢你的帮助和问候

public void send(String s_fromEmailAddress, String s_toEmailAddress, String s_messageSubject, String s_messageAttachmentFileName, String s_messageAttachmentFileNameToDisplay)
throws AddressException, MessagingException, IOException
{
Properties properties = null;
Session session = null;
Message message = null;
BodyPart  messageBodyPart = null;
Multipart  multipart = null;
DataSource fileDataSource = null;
String s_htmlText = null;
DataSource fds = null;

    //------------------------------------------------------------------
    // Get system properties.
    //------------------------------------------------------------------
    properties = System.getProperties();

    //------------------------------------------------------------------
    // Setup mail server.
    //------------------------------------------------------------------
    properties.setProperty("mail.smtp.host", "smtp.wanadoo.fr");

    //------------------------------------------------------------------
    // Get the default Session object.
    //------------------------------------------------------------------
    session = Session.getDefaultInstance(properties);

    //------------------------------------------------------------------
    // Define message.
    //------------------------------------------------------------------
    message = new MimeMessage(session);

    message.setFrom(new InternetAddress(s_fromEmailAddress));

    message.addRecipient(
                Message.RecipientType.TO,
                new InternetAddress(s_toEmailAddress));
                message.setSubject(s_messageSubject);

    //------------------------------------------------------------------
    // Create the message part.
    //------------------------------------------------------------------
    multipart = new MimeMultipart("related");

    //------------------------------------------------------------------
    // HTML part
    //------------------------------------------------------------------
    s_htmlText =
        "<html> \n"
      + "  <head> \n"
      + "    <meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\"> \n"
      + "  </head> \n"
      + "  <body> \n"
      + "    <img width=\"100px\" \n"
      + "         height=\"37px\" \n"
      + "         style=\"margin-left: 1em;\" \n"
      + "         src=\"cid:image\" \n"
      + "         alt=\"LOGO\" />\n"
      + "    <br /> \n"
      +      ms_messageBodyPartText
      + "  </body> \n"
      + "</html> ";

    messageBodyPart = new MimeBodyPart();
    messageBodyPart.setContent(s_htmlText, "text/html; charset=utf-8");
    messageBodyPart.setHeader("Content-Transfer-Encoding", "8bit");
    multipart.addBodyPart(messageBodyPart);

    //------------------------------------------------------------------
    // Logo (image)
    //------------------------------------------------------------------
    messageBodyPart = new MimeBodyPart();
    fds = new FileDataSource("where_the_image_can_be_found//Logo1_25_p_cent.png");

    messageBodyPart.setDataHandler(new DataHandler(fds));
    messageBodyPart.setHeader("Content-ID", "<image>");
    messageBodyPart.addHeader("Content-Type", "image/png");

    multipart.addBodyPart(messageBodyPart);

    //------------------------------------------------------------------
    // This part is the attachment.
    //------------------------------------------------------------------
    if((s_messageAttachmentFileName != null)
    && (s_messageAttachmentFileNameToDisplay != null))
    {
        messageBodyPart = new MimeBodyPart();
        fileDataSource = new FileDataSource(s_messageAttachmentFileName);
        messageBodyPart.setDataHandler(new DataHandler(fileDataSource));
        messageBodyPart.addHeader("Content-Type", "application/pdf");
        messageBodyPart.setFileName(s_messageAttachmentFileNameToDisplay);
        multipart.addBodyPart(messageBodyPart);
    }

    //------------------------------------------------------------------
    // Put parts in message.
    //------------------------------------------------------------------
    message.setContent(multipart);

    //------------------------------------------------------------------
    // Send the message
    //------------------------------------------------------------------
    Transport.send(message);
}
public void send(字符串s_from emailaddress,字符串s_to emailaddress,字符串s_messageSubject,字符串s_messageAttachmentFileName,字符串s_messageAttachmentFileName to display)
抛出AddressException、MessaginException、IOException
{
Properties=null;
会话=空;
Message=null;
BodyPart messageBodyPart=null;
Multipart Multipart=null;
DataSource fileDataSource=null;
字符串s_htmlText=null;
数据源fds=null;
//------------------------------------------------------------------
//获取系统属性。
//------------------------------------------------------------------
properties=System.getProperties();
//------------------------------------------------------------------
//安装邮件服务器。
//------------------------------------------------------------------
setProperty(“mail.smtp.host”、“smtp.wanadoo.fr”);
//------------------------------------------------------------------
//获取默认会话对象。
//------------------------------------------------------------------
session=session.getDefaultInstance(属性);
//------------------------------------------------------------------
//定义消息。
//------------------------------------------------------------------
message=新mimessage(会话);
message.setFrom(新的InternetAddress(s_fromEmailAddress));
message.addRecipient(
Message.RecipientType.TO,
新的互联网地址(s_toEmailAddress));
message.setSubject(s_messageSubject);
//------------------------------------------------------------------
//创建消息部分。
//------------------------------------------------------------------
多部分=新的多部分(“相关”);
//------------------------------------------------------------------
//HTML部分
//------------------------------------------------------------------
s_htmlText=
“\n”
+“\n”
+“\n”
+“\n”
+“\n”
+“\n”
+“
\n” +ms_messageBodyPartText +“\n” + " "; messageBodyPart=新的MimeBodyPart(); setContent(s_htmlText,“text/html;charset=utf-8”); messageBodyPart.setHeader(“内容传输编码”、“8bit”); multipart.addBodyPart(messageBodyPart); //------------------------------------------------------------------ //标志(图像) //------------------------------------------------------------------ messageBodyPart=新的MimeBodyPart(); fds=新文件数据源(“在哪里可以找到图像//Logo1\u 25\u p\u cent.png”); setDataHandler(新的DataHandler(fds)); messageBodyPart.setHeader(“内容ID”,即“”); messageBodyPart.addHeader(“内容类型”、“图像/png”); multipart.addBodyPart(messageBodyPart); //------------------------------------------------------------------ //这部分是附件。 //------------------------------------------------------------------ if((s_messageAttachmentFileName!=null) &&(s_messageAttachmentFileNameToDisplay!=null)) { messageBodyPart=新的MimeBodyPart(); fileDataSource=新的fileDataSource(s_messageAttachmentFileName); setDataHandler(新的DataHandler(fileDataSource)); messageBodyPart.addHeader(“内容类型”、“应用程序/pdf”); messageBodyPart.setFileName(s_messageattachmentfilename显示); multipart.addBodyPart(messageBodyPart); } //------------------------------------------------------------------ //在消息中放置部件。 //------------------------------------------------------------------ message.setContent(多部分); //------------------------------------------------------------------ //发送消息 //------------------------------------------------------------------ 传输。发送(消息); }
某些图像被邮件客户端阻止。您想用图像表代替吗?你好,彼得。谢谢你的工具。图像尺寸为142px 52px。我将“像素大小”设置为(1,1)。我将“表大小”设置为(142,52)。我选中了复选框“选中以获取所有颜色”。这真的不坏,但是