使用C#将图片添加到电子邮件正文中

13 浏览
0 Comments

使用C#将图片添加到电子邮件正文中

我想使用C#将PictureBox中的图像添加到我的电子邮件正文中。这是我所做的。有人可以帮帮我吗?

var fromAddress = new MailAddress("aaa@gmail.com", "aaa");
var toAddress = new MailAddress("bbb@gmail.com", "bbb");
const string fromPassword = "mypassword";
const string subject = "Tes Program";
const string body = "Bersama ini kami kirimkan QR Code sebagai sarana validasi pengiriman rekening koran Anda. Harap simpan dan tunjukkan QR Code ini saat kurir kami datang untuk mengantar rekening koran. Atas perhatiannya kami sampaikan terima kasih. Salam";
var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = subject,
    Body = body
})
{
    message.IsBodyHtml = true;
    AlternateView htmlView = AlternateView.CreateAlternateViewFromString(body, null, "text/html");
    // 获取PictureBox中的图像
    System.Drawing.Image image = pictureBox1.Image;
    // 将图像转换为Base64编码的字符串
    using (MemoryStream ms = new MemoryStream())
    {
        image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
        byte[] imageBytes = ms.ToArray();
        string base64String = Convert.ToBase64String(imageBytes);
        // 创建嵌入图像的HTML标签
        string imageHtml = "";
        // 将图像HTML标签添加到邮件正文中
        htmlView.LinkedResources.Add(new LinkedResource(new MemoryStream(imageBytes), "image/jpeg"));
        message.AlternateViews.Add(htmlView);
    }
    smtp.Send(message);
}

我有一个PictureBox1,并且希望将显示在PictureBox1中的图像添加到我的电子邮件正文中。

0
0 Comments

问题的原因是要在电子邮件正文中添加图像,解决方法是使用C#代码来实现。根据提供的代码,我们可以看到以下几个步骤:

1. 创建一个邮件对象MailMessage,并设置IsBodyHtml属性为true,以便支持HTML格式的邮件内容。

2. 创建一个AlternateView对象htmlView,用于创建HTML格式的邮件视图。

3. 添加图片资源,通过LinkedResource对象theEmailImage来表示,并将其ContentId设置为"myImageID"。

4. 将图片资源添加到AlternateView中的LinkedResources集合中。

5. 将AlternateView添加到邮件对象MailMessage的AlternateViews集合中。

6. 设置发件人、收件人、主题等邮件属性。

7. 创建SmtpClient对象smtp,并设置相关的SMTP服务器信息。

8. 发送邮件,调用smtp.Send(mail)方法。

通过以上步骤,我们可以实现在电子邮件正文中添加图片的功能。如果要运行以上代码,需要根据实际情况修改发件人邮箱、密码、SMTP服务器等相关信息。

0
0 Comments

问题:如何在邮件正文中添加图像?

原因:为了在邮件正文中添加图像,需要将其作为嵌入资源添加到邮件中,并为其创建一个HTML视图。

解决方法:可以使用以下示例代码来实现:

private static void AddImageToEmail(MailMessage mail, Image image)
{
    var imageStream = GetImageStream(image);
    var imageResource = new LinkedResource(imageStream, "image/png") { ContentId = "added-image-id" };
    var alternateView = AlternateView.CreateAlternateViewFromString(mail.Body, mail.BodyEncoding, MediaTypeNames.Text.Html);
    alternateView.LinkedResources.Add(imageResource);
    mail.AlternateViews.Add(alternateView);
}
private static Stream GetImageStream(Image image)
{
    // 将图像转换为内存流并返回
    var imageConverter = new ImageConverter();
    var imgaBytes = (byte[])imageConverter.ConvertTo(image, typeof(byte[]));
    var memoryStream = new MemoryStream(imgaBytes);
    return memoryStream;
}

以上代码将图像添加到邮件正文中,并创建一个HTML视图,以便正确显示图像。

0