как включить подпись в Outlook javamail

#java #jakarta-mail

#java #джакарта-почта

Вопрос:

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

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

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

Ответ №1:

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

Комментарии:

1. проблема в том, что подпись отличается от компьютера к компьютеру, поэтому учетная запись Outlook имеет свою собственную подпись, сохраненную в перемещаемой папке, поэтому моя цель — загрузить html или RTF-файл в качестве подписи, создание моментального снимка не является практичным решением. Спасибо за ваше предложение

Ответ №2:

Проблема в основном в изображении пути, включенном в файл 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() amp;amp; 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() amp;amp; 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 files.

Затем я создал изображение в виде совместного файла (прикрепленного к электронному письму), затем я изменяю 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);