在.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"`应指向你的图片文件所在的正确位置。如果图片与你的程序在同一目录下,可以使用相对路径;否则,请使用绝对路径。