0

I am using velocity for email templates in which i have to send a base64 decoded byte[] of image. I am processing this in loop. I can find base64 in email but image is not populating. I tried many cases below is the code

foreach( $ele in $list)
        <tr>
            <td>$ele.getName()</td>

            <td>#set ($src = $ele.getImageBase64()) <img src="data:image/jpg;base64, $src"> 1</td>
             <td> $src</td>
            <td><img src="data:image/jpg;base64, $ele.getImageBase64()"> 2</td>
            <td><img src="data:image/jpg;base64, ${ele.getImageBase64()}"> 3</td>
            <td><img src="data:image/jpg;base64,"+$ele.getImageBase64()+"> 4</td>
        </tr>
    #end

none of case work for me i google a lot but did not get much helpful.Can any one please help me with this. Here list element is java object. Also the base64 please check

/9j/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAUCAAeADIEASIAAhEBAxEBBCIA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADgQBAAIRAxEEAAA/APn+iiigD5/oooooq5ptguoXDRyX1pZRIhd57pmCqMgDAUM7EkgYVSepOACR0mneEYmj1ZZ7yxlh/spb6y1DzXSEKLuKJ5MMqvwPOXaU3Ej5VYlcgBRVzTbBdQuGjkvrSyiRC7z3TMFUZAGAoZ2JJAwqk9ScAEjpNO8IxNHqyz3ljLD/AGUt9Zah5rpCFF3FE8mGVX4HnLtKbiR8qsSuePorqP8AhB7z+0fJ/tTSvsP9n/2l/af2g/Z/s+dm77u/d5n7vZs37+Md65++tfsV5Jbi4guFXBWaB9yOpAII7jII4IDDoQCCAAcfRXUf8IPef2j5P9qaV9h/s/8AtL+0/tB+z/Z87N33d+7zP3ezZv38Y71z99a/YryS3FxBcKuCs0D7kdSAQR3GQRwQGHQgEECvRRRQBXooooooooAKKKK2PDeuf2BqMlz5c58yIxebaz+RcQ5IO6KXa2xjt2k7TlGdf4sjoL74gxancSG/0qe7hk0oaW/n6g8kzKLoTiUyEZMgAA6bdwzt2/u64eigDY8N65/YGoyXPlznzIjF5trP5FxDkg7opdrbGO3aTtOUZ1/iyOgvviDFqdxIb/Sp7uGTShpb+fqDyTMouhOJTIRkyAADpt3DO3b+7rh6K7D/AITLTvtX2f8AsD/iSf2V/Zf2T7Y3nbfN8/zfO248zzvn+5tx8u3FcvfTW895JJaWv2W34EcRkLkAADLMerHGSQAMk4CjAFeigDsP+Ey077V9n/sD/iSf2V/Zf2T7Y3nbfN8/zfO248zzvn+5tx8u3FcvfTW895JJaWv2W34EcRkLkAADLMerHGSQAMk4CjAFeiiiiigAooor/9k=
user2423768
  • 185
  • 1
  • 12

2 Answers2

0

Most probably, you're trying to display the byte[] representation of the base 64 encoding rather than its string representation.

Check the signature of your getImageBase64() method to see if it returns a byte[] or a String. If it's not a String, you have found the problem.

If so, check if this conversion tool has a getImageBase64String() or similar. Otherwise, you'll have to write it yourself.

Claude Brisson
  • 4,085
  • 1
  • 22
  • 30
  • getImageBase64() returns the String representation of byte[]. you can see the string above mentioned in question. You can also check this string https://jsfiddle.net/casiano/xadvz/ it works fine if i directly pass it in source. Also in mail i print it but unluckily it is not working with image source. You can see the different scenarios i used to make it work. – user2423768 Apr 16 '18 at 04:41
0

Check if the Content Type is correct according to the file format.

Examples:

data:image/jpg;base64
data:image/png;base64