/// <summary>
/// 发送电子邮件。
/// </summary>
/// <param name="from">发件人邮箱地址。</param>
/// <param name="to">收件人邮箱地址。</param>
/// <param name="subject">邮件主题。</param>
/// <param name="body">邮件正文。</param>
/// <param name="isHtml">邮件正文是否是HTML。</param>
/// <param name="smtpHost">SMTP 服务器地址。</param>
/// <param name="smtpPort">SMTP 服务器端,例如Gmail是587,Microsoft 365是587或25(需要SSL)</param>
/// <param name="smtpEnableSsl">是否启用 SSL。</param>
/// <param name="smtpUser">SMTP 用户名。</param>
/// <param name="smtpPassword">SMTP 密码。</param>
/// <param name="attachments">要添加的附件文件路径列表。</param>
public static void SendEmail(string from, string to, string subject, string body,bool isHtml ,string smtpHost, int smtpPort, bool smtpEnableSsl, string smtpUser, string smtpPassword, List<string> attachments = null)
{
try
{
// 创建邮件消息对象
MailMessage mail = new MailMessage(from, to, subject, body);
mail.IsBodyHtml = isHtml;
// 添加附件
if (attachments != null)
{
foreach (string attachmentPath in attachments)
{
mail.Attachments.Add(new Attachment(attachmentPath));
}
}
// 创建SmtpClient对象并配置SMTP服务器
SmtpClient smtp = new SmtpClient(smtpHost)
{
Port = smtpPort,
Credentials = new NetworkCredential(smtpUser, smtpPassword),
EnableSsl = smtpEnableSsl
};
// 发送邮件
smtp.Send(mail);
Console.WriteLine("邮件发送成功!");
}
catch (SmtpException ex)
{
Console.WriteLine("邮件发送失败(SMTP错误):" + ex.Message);
}
catch (Exception ex)
{
Console.WriteLine("邮件发送失败:" + ex.Message);
}
}
private static void Main(string[] args)
{
// WriteLog("Windows任务计划", "开始", "执行");
//SendEmail();
// SMTP 配置信息
string smtpHost = "mail.XXXXX.com";
int smtpPort = 25;
bool smtpEnableSsl = true;
string smtpUser = "AAAAA@XXXXX.com";
string smtpPassword = "your email password";
// 要发送的附件路径
List<string> attachments =new List<string> () { @"D:\VS安装文档.png", @"D:\SqlServer2022安装文档.png" };
SendEmail(
from: "AAAAA@XXXXX.com",
to: "BBBBB@XXXXX.com",
subject: "测试邮件",
body: "这是测试邮件的正文。",
isHtml: false,
smtpHost: smtpHost,
smtpPort: smtpPort,
smtpEnableSsl: smtpEnableSsl,
smtpUser: smtpUser,
smtpPassword: smtpPassword,
attachments:attachments
);
Console.ReadKey();
}