如何使用Restful服务将图像作为电子邮件附件发送

时间:2013-05-14 09:10:37

标签: vb.net email rest

下面是我用于从jquery ajax调用接收图像的vb.net代码..

Public Function MailKpiChart(ByVal img As String) As GenericResponse(Of Boolean) Implements IKPI.MailKpiChart

        Dim SmtpServer As New Net.Mail.SmtpClient()
        SmtpServer.Credentials = New Net.NetworkCredential("xyz@gmail.com", "password")
        SmtpServer.Port = 587
        SmtpServer.Host = "smtp.gmail.com"
        SmtpServer.EnableSsl = True
        Dim blStatus As Boolean
        Try
            Dim mailMessage As New MailMessage()
            mailMessage.From = New MailAddress("from@gmail.com", ".Net Devoloper")
            mailMessage.To.Add(New MailAddress("to@gmail.com"))
            mailMessage.Subject = "test mail"
            mailMessage.Body = "hello world"
            Dim imgStream As New MemoryStream()
            Dim Image As System.Drawing.Bitmap = getImagefromBase64(img)
            Dim filename As String = "sample image"

            Image.Save(imgStream, System.Drawing.Imaging.ImageFormat.Png)
            mailMessage.Attachments.Add(New Attachment(imgStream, filename, System.Net.Mime.MediaTypeNames.Image.Jpeg))
            SmtpServer.DeliveryMethod = SmtpDeliveryMethod.Network
            SmtpServer.Send(mailMessage)
            blStatus = True
            Return ServiceUtility.BuildResponse(Of Boolean)(blStatus, String.Empty, String.Empty, 0)
        Catch ex As Exception
            Return ServiceUtility.BuildResponse(Of Boolean)(False, "",
        ex.Message, AppConstants.ErrorSeverityCodes.HIGH)
        End Try

    End Function

这是我将base64字符串转换为图片的功能

 Public Function getImagefromBase64(ByVal uploadedImage As String) As Image
        'get a temp image from bytes, instead of loading from disk
        'data:image/gif;base64,
        'this image is a single pixel (black)
        Dim bytes As Byte() = Convert.FromBase64String(uploadedImage)

        Dim image__1 As Image
        Using ms As New MemoryStream(bytes)
            ms.Write(bytes, 0, bytes.Length)
            image__1 = Image.FromStream(ms)
        End Using

        Return image__1
    End Function

当我看到我的gmail收件箱时,我发了一封带附件的邮件,但我看不到我发送的实际图片..我只是一张空白图片

需要帮助

此致

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,只是在将流附加到消息之前添加以下行就解决了这个问题。

imgStream.Position = 0

此致 乔纳森。

答案 1 :(得分:0)

将您的网址添加到其他网站

 Dim bodys As String = "<html><head><title> example </title></head><body><table width='100%'>"

    bodys += "<p><img width=135 height=77 src='http://www.example.com/image.gif'></p>"

    bodys += "</table></body></html>"

Dim mails As New System.Net.Mail.MailMessage()
        SmtpServer.Host = "127.0.0.1"
        SmtpServer.Port = 25

        mails = New System.Net.Mail.MailMessage()
        mails.From = New System.Net.Mail.MailAddress("example@example.com")
        mails.To.Add(txtEmail.Text)
        mails.Subject = ""
        mails.BodyEncoding = Encoding.UTF8
        mails.IsBodyHtml = True

        mails.Body = bodys.ToString()


        SmtpServer.Send(mails)

相对网址 - 指向网站中的文件

src="image.gif"

http://www.w3schools.com/tags/att_img_src.asp

相关问题