开放的编程资料库

当前位置:我爱分享网 > C#教程 > 正文

C#发送邮件

C#发送电子邮件教程展示了如何在C#中使用System.Net.Mail和Mailkit发送简单的电子邮件。

邮件传输协议

简单邮件传输协议(SMTP)是用于电子邮件传输的互联网标准通信协议。邮件服务器和客户端使用SMTP发送和接收邮件消息。

在C#中,我们可以使用System.Net.Mail和Mailkit来发送邮件。内置的System.Net.Mail可用于简单的解决方案,而Mailkit更适合复杂的任务。

注意:Gmail不是测试邮件的理想选择。我们应该使用Mailtrap或Mailgun等在线服务,或使用网络托管公司提供的SMTP服务器。

在本文中,我们将使用Maitrapservice来测试我们的示例。Mailtrap提供免费的个人测试计划。

C#简单邮件例子

在第一个示例中,我们发送一条简单的消息。

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

var from = "from@example.com";
var to = "to@example.com";
var subject = "Test mail";
var body = "Test body";

var username = "username"; // get from Mailtrap
var password = "password"; // get from Mailtrap

var host = "smtp.mailtrap.io";
var port = 2525;

var client = new SmtpClient(host, port)
{
    Credentials = new NetworkCredential(username, password),
    EnableSsl = true
};

client.Send(from, to, subject, body);

Console.WriteLine("Email sent");

使用SmtpClient发送电子邮件。

var from = "from@example.com";
var to = "to@example.com";
var subject = "Test mail";
var body = "Test body";

这些是电子邮件详细信息。

var username = "username"; // get from Mailtrap
var password = "password"; // get from Mailtrap

我们使用从Mailtrap服务获得的用户名和密码。

var host = "smtp.mailtrap.io";
var port = 2525;

这是SMTP主机和端口。

var client = new SmtpClient(host, port)
{
    Credentials = new NetworkCredential(username, password),
    EnableSsl = true
};

创建了一个SmtpClient,我们通过它发送电子邮件。

client.Send(from, to, subject, body);

Send方法将指定的电子邮件消息发送到SMTP服务器进行传递。邮件发件人、收件人、主题和邮件正文都是字符串值。

C#电子邮件JSON配置

在下一个示例中,我们将展示如何从JSON配置文件中读取电子邮件详细信息。

$ dotnet add package Microsoft.Extensions.Configuration.Json

我们添加Microsoft.Extensions.Configuration.Json包。

{
    "Smtp": {
      "Host": "smtp.mailtrap.io",
      "Port": 2525,
      "Username": "username",
      "Password": "password"
    }
  }

这是JSON配置文件。

using System.Net.Mail;
using System.Net;
using Microsoft.Extensions.Configuration;

var from = "from@example.com";
var to = "to@example.com";
var subject = "Test mail";
var body = "Test body";

var builder = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("email.json");
var config = builder.Build();

var host = config["Smtp:Host"];
var port = Convert.ToInt32(config["Smtp:Port"]);
var username = config["Smtp:Username"];
var password = config["Smtp:Password"];

var client = new SmtpClient(host, port);
client.Credentials = new NetworkCredential(username, password);
client.EnableSsl = true;

client.Send(from, to, subject, body);

Console.WriteLine("Email sent");

在示例中,主机、端口、用户名和密码是从JSON配置文件中读取的。

C#HTML电子邮件

在下一个示例中,我们发送一封HTML电子邮件。

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

var from = new MailAddress("from@example.com");
var to = new MailAddress("to@example.com");
var subject = "HTML email";
var body = "<p>An old <b>falcon</b> in the sky.</p>";

var username = "username"; // get from Mailtrap
var password = "password"; // get from Mailtrap

var host = "smtp.mailtrap.io";
var port = 2525;

var client = new SmtpClient(host, port);
client.Credentials = new NetworkCredential(username, passowrd);
client.EnableSsl = true;

var mail = new MailMessage();
mail.Subject = subject;
mail.From = from;
mail.To.Add(to);
mail.Body = body;
mail.IsBodyHtml = true;

client.Send(mail);

Console.WriteLine("Email sent");

我们使用MailMessage发送HTML电子邮件。

var mail = new MailMessage();
mail.Subject = subject;
mail.From = from;
mail.To.Add(to);
mail.Body = body;
mail.IsBodyHtml = true;

client.Send(mail);

现在电子邮件详细信息设置为MailMessageIsBodyHtml表示正文是HTML。

C#电子邮件附件

在下一个示例中,我们将文本文件附加到电子邮件中。

sky
blud
rock
water
poem

我们在附件中发送此文本文件。

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

var from = new MailAddress("from@example.com");
var to = new MailAddress("to@example.com");
var subject = "Email with attachment";
var body = "Email body";

var username = "username"; // get from Mailtrap
var password = "password"; // get from Mailtrap

var host = "smtp.mailtrap.io";
var port = 2525;

var client = new SmtpClient(host, port);
client.Credentials = new NetworkCredential(username, passowrd);
client.EnableSsl = true;

var mail = new MailMessage();
mail.Subject = subject;
mail.From = from;
mail.To.Add(to);
mail.Body = body;

var attachment = new Attachment("words.txt");
mail.Attachments.Add(attachment);

client.Send(mail);

Console.WriteLine("Email sent");

我们使用Attachments属性和Attachment类通过电子邮件发送附件。

C#用Mailkit发送简单的邮件

现在我们使用Mailkit库来发送一封简单的邮件。

$ dotnet add package Mailkit

我们将Mailkit包添加到项目中。

using MailKit.Net.Smtp;
using MailKit.Security;
using MimeKit;

var host = "smtp.mailtrap.io";
var port = 2525;

var username = "username"; // get from Mailtrap
var password = "password"; // get from Mailtrap

var message = new MimeMessage();

message.From.Add(new MailboxAddress("John Doe", "john.doe@example.com"));
message.To.Add(new MailboxAddress("Jane Doe", "jane.doe@example.com"));
message.Subject = "Test subject";

var bodyBuilder = new BodyBuilder();
bodyBuilder.TextBody = "Test body";
message.Body = bodyBuilder.ToMessageBody();

var client = new SmtpClient();

client.Connect(host, port, SecureSocketOptions.Auto);
client.Authenticate(username, password);

client.Send(message);
client.Disconnect(true);

Console.WriteLine("Email sent");

我们使用MimeMessageBodyBuilderSmtpClient类来生成电子邮件。电子邮件使用Send发送。

使用Mailkit的C#HTML电子邮件

在下一个示例中,我们发送一封HTML电子邮件。

using MailKit.Net.Smtp;
using MailKit.Security;
using MimeKit;

var host = "smtp.mailtrap.io";
var port = 2525;

var username = "username"; // get from Mailtrap
var password = "password"; // get from Mailtrap

var message = new MimeMessage();

message.From.Add(new MailboxAddress("John Doe", "john.doe@example.com"));
message.To.Add(new MailboxAddress("Jane Doe", "jane.doe@example.com"));
message.Subject = "Test subject";

var bodyBuilder = new BodyBuilder();
bodyBuilder.HtmlBody = "<p>An old <b>falcon</b> in the sky.</p>";
message.Body = bodyBuilder.ToMessageBody();

var client = new SmtpClient();

client.Connect(host, port, SecureSocketOptions.Auto);
client.Authenticate(username, password);

client.Send(message);
client.Disconnect(true);

Console.WriteLine("Email sent");

HTML正文添加了HtmlBody属性。

在本文中,我们使用C#发送了简单的电子邮件。

列出所有C#教程。

未经允许不得转载:我爱分享网 » C#发送邮件

感觉很棒!可以赞赏支持我哟~

赞(0) 打赏