как включить подпись в outlook javamail - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь создать электронное письмо, используя javamail, где я могу прикрепить много файлов, а также настроить сообщение тела, место назначения и множество настроек ... В конце я сохраняю это письмо во временном файле, чтобы использовать его в outlook 2016 где я могу теперь открыть outlook и передать файл eml с помощью командной строки outlook с ключом / eml. Проблема заключается в попытке прикрепить один файл с outlook с помощью switch / a, я вижу подпись в нижнем колонтитуле сообщения body, но когда я использую созданный файл eml, я не вижу никакой подписи.

что я пытался сделать, это загрузить предварительно сохраненную подпись в папку роуминга из другого формата (htm, rtf и txt) с файлом txt, проблем нет, и я могу поместить его в сообщение в файле eml, но с помощью rtf i не могу визуализировать содержимое, как я вижу в слове мс, используя htm файл, изображения (если есть) все еще не видны.

Мне интересно, как я могу использовать один из двух (HTML или RTF-файл), чтобы автоматически включить подпись в нижней части тела сообщения. Надеюсь, что кто-то уже работал на ту же тему.

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

проблема в основном в изображении пути, включенном в файл htm, поэтому я проанализировал исходный путь с абсолютным, чтобы я мог правильно визуализировать изображение

public static String getSignature() throws IOException {
    String content ="";
    String appDataPath = System.getenv("APPDATA")+"\\Microsoft\\Signatures\\"; 
    System.out.println(appDataPath);
    File folder = new File(appDataPath);
    File[] listOfFiles = folder.listFiles();
    for (int i = 0; i < listOfFiles.length; i++) {
      File file = listOfFiles[i];
      if (file.isFile() && file.getName().endsWith(".htm")) {
            content = FileUtils.readFileToString(file , "windows-1252");
            content =content.replaceAll("src=\"", "src=\"" +appDataPath.replace("\\", "/"));
      } 
    } 
    return  content; 
}

затем я снова извлекаю содержимое и помещаю его в сообщение, которое хочу отправить.

    MimeBodyPart body = new MimeBodyPart();
    body.setDisposition(MimePart.INLINE);
    body.setContent(signature, "text/html");
    mmp.addBodyPart(body);

я добавил некоторые улучшения в код:

public static String[] getSignature() throws IOException {
    String content = "";
    String appDataPath =System.getenv("APPDATA") + "\\Microsoft\\Signatures\\";
    System.out.println(appDataPath);
    File folder = new File(appDataPath);
    File[] listOfFiles = folder.listFiles();  

    String imagePath ="";
    for (int i = 0; i < listOfFiles.length; i++) {
        File file = listOfFiles[i];
        if (file.isFile() && file.getName().endsWith(".htm")) {
            content = FileUtils.readFileToString(file, "windows-1252");
            content = content.replaceAll("src=\"", "src=\"" + appDataPath.replace("\\", "/"));   

        }else if(file.isDirectory()){
            File[] listOfHtmlFiles = file.listFiles();
            for (File f : listOfHtmlFiles) { 
                if(Files.probeContentType(f.toPath()).contains("image")) {
                      imagePath = f.getPath();
                }
            }
        }
    }

    return new String[]{content,imagePath};
}

В этом новом коде я получаю подпись из HTML и путь к изображению из папок с HTML-файлами.

Затем я создал изображение изображение в виде совместного файла (прилагается к электронной почте) затем я изменяю src в подписи следующим образом:

        MimeBodyPart imgBP = new MimeBodyPart();
    DataSource fds = new FileDataSource(imgPath);
    imgBP.setDataHandler(new DataHandler(fds));
    imgBP.setHeader("Content-ID", "<image>");
    mmp.addBodyPart(imgBP);

    signature = signature.replaceFirst("(src=)([\"|\'])(.*)([\"|\'])", 
    "$1$2cid:image$4"); 
    MimeBodyPart body = new MimeBodyPart();
    body.setDisposition(MimePart.INLINE);
    body.setContent("<br><br><br>" + signature, "text/html");
    mmp.addBodyPart(body);
0 голосов
/ 24 апреля 2019

Я думаю, что вы можете сделать снимок подписи и сохранить ее в определенном каталоге и отправить HTML-сообщение по электронной почте, вставив изображение.Вы можете найти здесь о том, как вы можете отправлять встроенные HTML-изображения в теле сообщения.Надеюсь, это поможет.

...