>

java를 사용하여 이메일 본문의 일부로 이미지를 보내야합니다 :-

따른 단계는 다음과 같습니다

  • 이미지를 가져 와서 org.apache.commons.codec.binary.Base64를 사용하여 이미지를 인코딩하고 html에서 이미지 src 태그로 사용하십시오.

  • 인코딩 된 이미지를 디코딩하고 메일러 API를 사용하여 전송하십시오.

일부 이미지가 메일러 API를 통과하고 이메일 본문에 표시되고 일부는 표시되지 않는 문제가 있습니다.

문제를 일으키는 이미지의 크기입니까?

감사와 안부 쿤단 사이 니

public static void main(String[] args) {
     String htmlContent = readFile("c:\\temp\\imagenotsending.html");

     String encodeHtmlContent = encodeStringToBase64(htmlContent);
     System.out.println(encodeHtmlContent);
     String decodeHtmlBody = decodeStringToBase64(encodeHtmlContent);
     sendMailNew(decodeHtmlBody);
 }  
 public static void sendMailNew(String body) {
    String to = "to address";
    // Sender's email ID needs to be mentioned
    String from = "from address here";
    // Assuming you are sending email from localhost
    String host = "host here";
    // Get system properties
    Properties properties = System.getProperties();
    // Setup mail server
    properties.setProperty("host", host);
    // Get the default Session object.
    Session session = Session.getDefaultInstance(properties);
    try {
        // Create a default MimeMessage object.
        MimeMessage message = new MimeMessage(session);
        message.setContent(body, "text/html; charset=utf-8");
        // Set From: header field of the header.
        message.setFrom(new InternetAddress(from));
        // Set To: header field of the header.
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(
                to));
        // Set Subject: header field
        message.setSubject("This is the Subject Line!");
        // Send message
        Transport.send(message);
        System.out.println("Sent message successfully....");
    } catch (MessagingException mex) {
        mex.printStackTrace();
    }
}

public static String encodeStringToBase64(String aString) {
    byte[] encodedBytes = Base64.encodeBase64(aString.getBytes());
    return new String(encodedBytes);
}
public static String decodeStringToBase64(String aString) {
    byte[] decodedBytes = Base64.decodeBase64(aString.getBytes());
    return new String(decodedBytes);
}

아래와 같은 HTML 파일 :-

<html>
<head>
    <title>Test</title>
</head>
<body>
    
					<img src="data:image/png;base64,iVBORw0KGg.......rkJggg==">
                   
</body>
</html>

아래 이미지를 전송하지 않는 Base 64 인코딩 아래 이미지의 Base 64 인코딩이 전송 중입니다


  • 답변 # 1

    메일 본문에 base64 이미지를 보내려고합니다. 일부 메일 에이전트가이를 지원하지 않는다는 사실과 관련이있을 수 있습니다.

    여기에서 볼 수 있습니다 : HTML 이메일로 base64 이미지 보내기

    기본적으로 메일 본문에 이미지를 보내는 더 좋은 방법은 cid 및 image를 첨부 파일로 사용하는 것입니다 (또한 모든 곳에서 작동하지 않음).

    메일에 이미지를 추가하는 다른 방법과 장단점을 설명하는 좋은 기사가 있습니다. https://sendgrid.com/blog/embedding-images-emails-facts/

관련 자료

  • 이전 python - valueerror - 문자열을 부동으로 변환 할 수 없습니다 csv의 값을 부동으로 변환 할 수 없습니다
  • 다음 python - 필드를 선택하여 모델 인스턴스 생성