C#发送邮件源码

时间:2023-03-09 16:45:21
C#发送邮件源码

介绍

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。
SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。

发送邮件的基本步骤

第一:需要指明邮件SMTP服务器地址:smtp..com
第二:开启SSL安全连接。
第三:用户凭证。

SmtpClient是什么

Socket → TcpListener → SmtpClient

简单的邮件发送

        /// <summary>
/// 最基本的发送邮件的方法
/// </summary>
public static void Send163Demo()
{
string user = "*****@163.com";//替换成你的hotmail用户名
string password = "******";//替换成你的hotmail密码
string host = "smtp.163.com";//设置邮件的服务器
string mailAddress = "*****@163.com"; //替换成你的hotmail账户
string ToAddress = "*******@163.com";//目标邮件地址。 SmtpClient smtp = new SmtpClient(host);
smtp.EnableSsl = true; //开启安全连接。
smtp.Credentials = new NetworkCredential(user, password); //创建用户凭证
smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //使用网络传送
MailMessage message = new MailMessage(mailAddress, ToAddress, "标题", "发送内容"); //创建邮件
smtp.Send(message); //发送邮件 异步发送邮件 smtp.SendAsync(message, "huayingjie"); //这里简单修改下,发送邮件会变的很快。
Console.WriteLine("邮件发送成功!");
}

下面是对代码的封装,进行对hotmail、163、QQ发送邮件

using System.Collections.Generic;
using System.Net.Mail; namespace SendMail
{
public class MailModel
{
/// <summary>
/// 用户名,根据需要看是否需要带@hotmail.com
/// </summary>
public string UserName { get; set; } /// <summary>
/// 密码
/// </summary>
public string Password { get; set; } /// <summary>
/// 服务器
/// </summary>
public string Host { get; set; } /// <summary>
/// 邮箱账户
/// </summary>
public string FromMailAddress { get; set; } /// <summary>
/// 目标账户
/// </summary>
public IList<string> ToAddress { get; set; } /// <summary>
/// 是否开启安全连接
/// </summary>
public bool EnableSsl { get; set; } /// <summary>
/// 传输协议
/// </summary>
public SmtpDeliveryMethod DeliveryMethod { get; set; } /// <summary>
/// 端口
/// </summary>
public int Port { get; set; } /// <summary>
/// 标题
/// </summary>
public string Subject { get; set; } /// <summary>
/// 内容
/// </summary>
public string Body { get; set; } public MailModel() {
ToAddress = new List<string>();
} public MailModel(
string userName,
string password,
string host,
string mailAddress,
IList<string> toAddress,
bool enableSsl,
SmtpDeliveryMethod deliveryMethod,
int port,
string title,
string content
)
{
UserName = userName;
Password = password;
Host = host;
FromMailAddress = mailAddress;
ToAddress = toAddress;
EnableSsl = enableSsl;
DeliveryMethod = deliveryMethod;
Port = port;
Subject = title;
Body = content;
}
}
}
using SendMail;
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Mail; namespace SendMailDemo
{
class SendMail
{
public SendMail() { } /// <summary>
/// 最基本的发送邮件的方法
/// </summary>
public static void Send163Demo()
{
string user = "*****@163.com";//替换成你的hotmail用户名
string password = "******";//替换成你的hotmail密码
string host = "smtp.163.com";//设置邮件的服务器
string mailAddress = "*****@163.com"; //替换成你的hotmail账户
string ToAddress = "*******@163.com";//目标邮件地址。 SmtpClient smtp = new SmtpClient(host);
smtp.EnableSsl = true; //开启安全连接。
smtp.Credentials = new NetworkCredential(user, password); //创建用户凭证
smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //使用网络传送
MailMessage message = new MailMessage(mailAddress, ToAddress, "标题", "发送内容"); //创建邮件
smtp.Send(message); //发送邮件
Console.WriteLine("邮件发送成功!");
} //可以
public static void SendHotmail()
{
string user = "*****@hotmail.com";
string password = "*****";
string host = "smtp.live.com";
string mailAddress = "*****@hotmail.com";
IList<string> toAddress = new List<string>();
toAddress.Add("*****@163.com");
bool enableSsl = true;
SmtpDeliveryMethod deliveryMethod = SmtpDeliveryMethod.Network;
int post = ;
string title = "标题";
string content = "发送内容";
MailModel mailModel = new MailModel(user, password, host, mailAddress, toAddress,
enableSsl, deliveryMethod, post, title, content); SennMail(mailModel);
} //可以
public static void Send163()
{
string user = "*****@163.com";
string password = "*****";
string host = "smtp.163.com";
string mailAddress = "*****@163.com";
IList<string> toAddress = new List<string>();
toAddress.Add("*****@163.com");
bool enableSsl = true;
SmtpDeliveryMethod deliveryMethod = SmtpDeliveryMethod.Network;
int post = ;
string title = "标题";
string content = "发送内容";
MailModel mailModel = new MailModel(user, password, host, mailAddress, toAddress,
enableSsl, deliveryMethod, post, title, content); SennMail(mailModel);
} public static void SendQQ()
{
string user = "*****@qq.com";
string password = "*****";
string host = "smtp.qq.com";
string mailAddress = "*****@qq.com";
IList<string> toAddress = new List<string>();
toAddress.Add("*****@qq.com");
bool enableSsl = true;
SmtpDeliveryMethod deliveryMethod = SmtpDeliveryMethod.Network;
int post = ;
string title = "标题";
string content = "发送内容";
MailModel mailModel = new MailModel(user, password, host, mailAddress, toAddress,
enableSsl, deliveryMethod, post, title, content); SennMail(mailModel); ;
} public static void SennMail(MailModel mailModel)
{
SmtpClient smtp = new SmtpClient(mailModel.Host);
smtp.EnableSsl = mailModel.EnableSsl;
smtp.Credentials = new NetworkCredential(mailModel.UserName, mailModel.Password);
smtp.DeliveryMethod = mailModel.DeliveryMethod;
//smtp.Port = mailModel.Port;//有些时候设置端口会出现很奇怪的问题,这个与服务器的设置有关,建议不要设置端口。
MailAddress mailAddress = new MailAddress(mailModel.FromMailAddress); MailMessage message = new MailMessage();
message.From = mailAddress;
foreach (string toAddress in mailModel.ToAddress)
{
message.To.Add(toAddress);
}
message.Subject = mailModel.Subject;
message.Body = mailModel.Body;
//message.IsBodyHtml = true;
smtp.Send(message);
Console.WriteLine("邮件发送成功!");
}
}
}
using System;

namespace SendMailDemo
{
class Program
{
static void Main(string[] args)
{
SendMail.Send163Demo();
//SendMail.Send163();
//SendMail.SendQQ();
//SendMail.SendHotmailDemo();
Console.ReadLine();
}
}
}