您可以简单地使用Mailkit
- 它适用于任何使用 .NET 的应用程序。
- 它支持HTML、纯文本和RTF正文
- 是的,邮件出现在草稿文件夹中并被识别为新邮件,您可以实现。
- 支持附件
使用很简单,我可以举个例子说明我在我的爱好项目中是如何使用它的。
我没有使用附件,但是使用 Mailkit,很容易做到这一点。
你可以查看他们的FAQ
但无论如何我会在这里发布我是如何使用它的。
1) 首先创建消息类,该类将负责处理您发送电子邮件的人的主题、内容和邮件信息。
使用简单的构造函数,您将种子放入您的属性中。
using System;
using MimeKit;
namespace SomeNamespace
{
public class Message
{
public List<MailboxAddress> To { get; set; }
public string Subject { get; set; }
public string Content { get; set; }
public Message(IEnumerable<string> to, string subject, string content)
{
To = new List<MailboxAddress>();
To.AddRange(to.Select(x => new MailboxAddress(x)));
Subject = subject;
Content = content;
}
}
}
2) 您还需要 SMTP 配置类,其中包含有关您的电子邮件的信息。 (从哪里发送邮件)
using System;
namespace SomeNamespace
{
public class EmailConfiguration
{
public string SMTPFrom { get; set; }
public string SMTPHost { get; set; }
public int SMTPPort { get; set; }
public string SMTPLogin { get; set; }
public string SMTPPassword { get; set; }
}
}
3) 然后你将创建你的简单界面
public interface IEmailSender
{
void SendEmail(Message message);
}
4) 然后您将创建服务的实现。
using System;
using MailKit.Net.Smtp;
using MimeKit;
using SomeNamespace.Configuration;
using SomeNamespace.Services.Interfaces;
namespace SomeNamespace
{
public class EmailSender : IEmailSender
{
private readonly EmailConfiguration _emailConfig;
public EmailSender(EmailConfiguration emailConfig)
{
_emailConfig = emailConfig;
}
public void SendEmail(Message message)
{
var emailMessage = CreateEmailMessage(message);
Send(emailMessage);
}
private MimeMessage CreateEmailMessage(Message message)
{
var emailMessage = new MimeMessage();
emailMessage.From.Add(new MailboxAddress(_emailConfig.SMTPFrom));
emailMessage.To.AddRange(message.To);
emailMessage.Subject = message.Subject;
emailMessage.Body = new TextPart(MimeKit.Text.TextFormat.Text) { Text = message.Content };
return emailMessage;
}
private void Send(MimeMessage mailMessage)
{
using (var client = new SmtpClient())
{
try
{
client.Connect(_emailConfig.SMTPHost, _emailConfig.SMTPPort, true);
client.AuthenticationMechanisms.Remove("XOAUTH2");
client.Authenticate(_emailConfig.SMTPLogin, _emailConfig.SMTPPassword);
client.Send(mailMessage);
}
catch(Exception message)
{
Console.WriteLine(message);
throw;
}
finally
{
client.Disconnect(true);
client.Dispose();
}
}
}
}
}
最后一步是创建您的 Message 和 EmailConfiguration 模型。
创建 EmailSender 的实例并发送电子邮件。
var message = new Message("whotosend@gmail.com", "Some example Subject", "Some example content");
var emailConfiguration = new EmailConfiguration()
{
SMTPFrom = "yourSmtpAdress",
SMTPHost = "yourSmtpHost",
SMTPLogin = "yourSmtpLogin",
SMTPPassword = "yourSmtpPassword",
SMTPPort = 465
};
var _emailSender = new EmailSender(emailConfiguration);
_emailSender.SendEmail(message);
当然,您可以使用 DI 创建服务实例,但这取决于您。
待在家里,注意安全,祝您编码愉快。