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);
现在电子邮件详细信息设置为MailMessage。IsBodyHtml表示正文是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");
我们使用MimeMessage、BodyBuilder和SmtpClient类来生成电子邮件。电子邮件使用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#教程。
