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#教程。