.net中 发送邮件内容嵌入图片的具体实例


在.NET中发送包含嵌入图片的邮件,通常我们会使用`System.Net.Mail`命名空间下的类。以下是一个简单的示例,展示如何发送一封带有嵌入图片的HTML邮件。请注意,为了简单起见,这个例子假设你已经有了一个SMTP服务器的访问权限。


using System;
using System.Net;
using System.Net.Mail;
using System.IO;

class Program
{
    static void Main()
    {
        // 邮件发送者信息
        string fromAddress = "your-email@example.com";
        string fromPassword = "your-email-password"; // 注意:对于Gmail等可能需要App密码

        // SMTP服务器信息
        string smtpHost = "smtp.example.com";
        int port = 587; // 常用的SMTP端口,根据实际情况修改

        // 邮件接收者信息
        string toAddress = "recipient-email@example.com";

        // 创建邮件对象
        MailMessage mail = new MailMessage();

        // 设置发件人和收件人
        mail.From = new MailAddress(fromAddress);
        mail.To.Add(toAddress);

        // 设置邮件标题
        mail.Subject = "测试邮件 - 嵌入图片";

        // 邮件正文(HTML格式),并嵌入图片
        string htmlBody = @"<html><body>
            <h1>这是一封带有图片的邮件</h1>
            <img src='cid:myImage' alt='示例图片'/>
            </body></html>";

        mail.IsBodyHtml = true;
        mail.Body = htmlBody;

        // 创建一个LinkedResource对象,用于嵌入图片
        LinkedResource imgResource = new LinkedResource("path/to/your/image.jpg", MediaTypeNames.Image.Jpeg);
        imgResource.ContentId = "myImage"; // 确保这与HTML中的cid匹配

        // 将LinkedResource添加到邮件的AlternateViews集合中
        AlternateView alternateView = AlternateView.CreateAlternateViewFromString(mail.Body, null, MediaTypeNames.Text.Html);
        alternateView.LinkedResources.Add(imgResource);
        mail.AlternateViews.Add(alternateView);

        // SMTP客户端设置
        SmtpClient smtp = new SmtpClient(smtpHost, port);
        smtp.Credentials = new NetworkCredential(fromAddress, fromPassword);
        smtp.EnableSsl = true; // 根据SMTP服务器要求设置

        try
        {
            // 发送邮件
            smtp.Send(mail);
            Console.WriteLine("邮件发送成功!");
        }
        catch (Exception ex)
        {
            Console.WriteLine("邮件发送失败:" + ex.Message);
        }
    }
}

注意:

1. 替换`your-email@example.com`、`your-email-password`、`smtp.example.com`、`587`、`recipient-email@example.com`和`"path/to/your/image.jpg"`为你自己的信息。

2. 如果你的邮箱(如Gmail)要求使用App密码,请确保在`fromPassword`中使用App密码而不是你的账户密码。

3. 根据你的SMTP服务器要求,可能需要调整`EnableSsl`属性的值。

4. 路径`"path/to/your/image.jpg"`应指向你的图片文件所在的正确位置。如果图片与你的程序在同一目录下,可以使用相对路径;否则,请使用绝对路径。