Как добавить несколько изображений встроенного HTML в тело письма, повторяя ArrayList путей к изображениям? - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь добавить в текст сообщения электронной почты некоторые изображения, перебирая ArrayList путей к изображениям.Одно из них, первое изображение, добавляется в теле HTML, но те, которые появляются после добавления в виде вложений с именем ATT00X.jpg.Я нахожу это странным.Как я могу иметь оба изображения в тексте HTML письма, одно под другим?

Приведенный ниже код, возможно, вы, ребята, можете увидеть в нем ошибку:

 Dim mm As New MailMessage
 mm.Body = String.Format("")
 For i As Integer = 0 To imagespath.Count - 1
                Dim cale As String = imagespath(i).ToString()
                Dim img As LinkedResource = Nothing
                Try
                    img = New LinkedResource(cale, MediaTypeNames.Image.Jpeg)
                    Dim strimage As String = "Image"
                    img.ContentId = strimage(i)
                    mm.Body = mm.Body & "<p>&nbsp;</p>"
                    mm.Body = mm.Body & "<td><img src=cid:" & img.ContentId & " alt=></td>"
                    mm.Body = mm.Body & "<p>&nbsp;</p>"
                    Dim av As AlternateView = AlternateView.CreateAlternateViewFromString(mm.Body, Nothing, MediaTypeNames.Text.Html)
                    av.LinkedResources.Add(img)
                    mm.AlternateViews.Add(av)
                Catch ex As Exception
                    Log.Information(ex.Message)
                End Try
            Next

1 Ответ

0 голосов
/ 14 июня 2019

Не знаю об остальном, но я вижу здесь потенциальную проблему.

Dim strimage As String = "Image"
img.ContentId = strimage(i)

Когда вы запрашиваете strimage (i), вы получите итерацию символов в «Image», поскольку цикл продолжается,

I
m
a
g
e

Это то, что вы ожидали?Кажется, вы могли бы легко получить исключение индекса вне диапазона в зависимости от imagespath.Count.

. Также было бы лучше использовать List(Of String) вместо ArrayList.

...