如何用 C# 发送电子邮件?

本文关键字:电子邮件 何用 | 更新日期: 2023-09-18 11:26:21

在这里,您将学习如何使用 .NET 框架的内置类在 C# 中发送电子邮件。

我们必须使用协议来发送或接收 C# 或任何其他语言的电子邮件。电子邮件是一个复杂的通信系统,涉及客户端和服务器。电子邮件客户端从不同的设备向存储电子邮件的电子邮件服务器发送或接收电子邮件。通过使用标准化协议,电子邮件客户端和服务器可以相互通信,并确保正确传递电子邮件。

SMTP(简单邮件传输协议)用于将电子邮件从客户端发送到服务器。它是一种简单可靠的协议,受到电子邮件服务提供商和服务器的广泛支持。

IMAP 和 POP3 协议用于从电子邮件服务器检索电子邮件。

在这里,我们想发送电子邮件,所以我们只需要使用 SMTP 协议。以下示例使用 SMTP 协议发送电子邮件。

using System;
using System.Net;
using System.Net.Mail;
class Program
{
    static void Main(string[] args)
    {
        MailMessage mailMessage = new MailMessage();
        mailMessage.From = new MailAddress("[email protected]");
        mailMessage.To.Add("[email protected]");
        mailMessage.Subject = "Subject";
        mailMessage.Body = "This is test email";
        SmtpClient smtpClient = new SmtpClient();
        smtpClient.Host = "smtp.mywebsitedomain.com";
        smtpClient.Port = 587;
        smtpClient.UseDefaultCredentials = false;
        smtpClient.Credentials = new NetworkCredential("username", "password");
        smtpClient.EnableSsl = true;
        try
        {
            smtpClient.Send(mailMessage);
            Console.WriteLine("Email Sent Successfully.");
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error: " + ex.Message);
        }
    }
}

让我们一步一步地了解上面的代码:

第 1 步:

System.Net.Mail命名空间包括用于发送或接收电子邮件的所有类。System.Net命名空间用于提供网络凭据。因此,将它们包含在您的程序中。

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

步骤 2

我们需要使用 MailMessage 类对象构造电子邮件。使用 MailMessage 对象提供电子邮件详细信息,例如发件人、收件人、主题和邮件正文。

MailMessage mailMessage = new MailMessage();
mailMessage.From = new MailAddress("[email protected]");
mailMessage.To.Add("[email protected]");
mailMessage.Subject = "Subject";
mailMessage.Body = "This is test email";

请注意,发件人电子邮件应该是您要从中发送电子邮件的网站电子邮件地址。

步骤 3

接下来,我们需要使用 SmtpClient 类配置 SMTP 服务器详细信息。

SmtpClient smtpClient = new SmtpClient();
smtpClient.Host = "smtp. mywebsitedomain.com";
smtpClient.Port = 587;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = new NetworkCredential("username", " password");
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.EnableSsl = true;

步骤 4

最后,使用 SmtpClient 类的 Send() 方法发送电子邮件,作为smtpClient.Send(mailMessage);

因此,您可以使用 C# 中的 SMTP 协议发送电子邮件。

发送网页电子邮件(Send HTML Email)

您可以将电子邮件作为 HTML 页面发送,您可以在正文中使用 HTML 标记。

message.IsBodyHtml = true;
message.Body = "<h1>Great offer</h1>";

发送电子邮件附件(Send Email Attachment)

您可以通过在邮件对象中添加附件对象来发送电子邮件中的附件,如下所示。

MailMessage message = new MailMessage();
mailMessage.From = new MailAddress("[email protected]");
mailMessage.To.Add("[email protected]");
mailMessage.Subject = "Subject";
mailMessage.Body = "This is test email with attachment.";
// Create a new Attachment object
Attachment attachment = new Attachment(@"C:pathtoattachment.pdf");
//// Add the attachment to the MailMessage object
message.Attachments.Add(attachment);
smtpClient.Send(message);

web.config 中的电子邮件配置(Email Configuration in web.config)

可以在 app.config 或 web.config 中的部分下添加以下配置。这将允许您在不修改代码的情况下更改发件人的电子邮件地址和凭据。

<system.net>
    <mailSettings>
    <smtp from=" [email protected] ">
    <network host="smtp.mywebsitedomain.com"
                port="587"
                userName="username"
                password="password"
                enableSsl="true" />
		</smtp>
	</mailSettings>
</system.net>

现在,以下发送电子邮件时代码中没有硬编码的发件人电子邮件凭据。

MailMessage message = new MailMessage();
message.To.Add(new MailAddress("[email protected]"));
message.Subject = "Subject";
message.Body = "This is test email.";
Attachment attachment = new Attachment(@"D:logo.png");
message.Attachments.Add(attachment);
SmtpClient smtpClient = new SmtpClient();
smtp.Send(message);

因此,您可以使用 C# 中内置的 SMTPClient 类发送电子邮件。还可以使用 MailKit 库在 .NET 中发送和接收电子邮件。


本文内容总结: