这篇文章主要介绍了C#发送邮件的方法,本文以QQ邮箱为例。在程序开发中通常有推送消息的需求,通常为短信服务,邮件,电话提醒。短信及电话提醒通常需要向运营商购买服务调用接口,比较麻烦。邮件信息推送是不错的选择,下面使用System.Net.Mail来实现邮件发送;在贴代码之前,首先需要给QQ邮箱开服务IMAP/SMTP服务,详细开通方法见 开通方法。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Text;
using System.Threading.Tasks;
namespace blog_email
{
public class EmailHelper
{
/// <summary>
/// 发送邮件
/// </summary>
/// <param name="info"></param>
public static void SendEmail(SendMailInfo info)
{
try
{
//发送电子邮件类
MailMessage mail = new MailMessage();
//添加收件人
foreach (string item in info.Addressee)
{
mail.To.Add(item);
}
//添加抄送
foreach (string item in info.CC)
{
mail.CC.Add(item);
}
//邮件主题
mail.Subject = info.Theme;
//邮件标题编码
mail.SubjectEncoding = info.SubjectEncoding;
//发件信息
mail.From = new MailAddress(info.From, info.DisplayName, info.SubjectEncoding);
//邮件内容
mail.Body = info.Body;
//邮件内容编码
mail.BodyEncoding = info.BodyEncoding;
//是否是HTML邮件
mail.IsBodyHtml = info.IsBodyHtml;
//邮件优先级
mail.Priority = info.Priority;
//SMTP协议
SmtpClient smtp = new SmtpClient();
//是否使用SSL安全加密 使用QQ邮箱必选
smtp.EnableSsl = info.EnableSsl;
smtp.UseDefaultCredentials = info.UseDefaultCredentials;
//验证发件人信息
smtp.Credentials = new NetworkCredential(info.From, info.Password);
//开始发送
smtp.Send(mail);
}
catch (Exception e)
{
throw e;
}
}
}
public class SendMailInfo
{
public string From { get; set; }//发件人地址
public string Password { get; set; }//密码
public string[] Addressee { get; set; }//收件人地址
public string[] CC { get; set; }//抄送
public string Theme { get; set; }//主题
public string DisplayName { get; set; }//发件人名称
public Encoding SubjectEncoding { get; set; }//编码
public string Body { get; set; }//邮件内容
public Encoding BodyEncoding { get; set; }//邮件内容编码
public bool IsBodyHtml { get; set; }//是否HTML邮件
public MailPriority Priority { get; set; }//邮件优先级
public bool EnableSsl { get; set; }//是否ssl
public bool UseDefaultCredentials { get; set; }
}
}
调用示例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace blog_email
{
class Program
{
static void Main(string[] args)
{
EmailHelper.SendEmail(new SendMailInfo()
{
Addressee = new string[] { "shoujianren@outlook.com" },
Body = "这是邮件正文",
BodyEncoding = Encoding.UTF8,
CC = new string[] { },
DisplayName = "测试邮件",
EnableSsl = true,
From = "123@qq.com",
IsBodyHtml = false,
Password = "123456",
Priority = System.Net.Mail.MailPriority.High,
SubjectEncoding = Encoding.UTF8,
Theme = "邮件主题",
UseDefaultCredentials = false
});
}
}
}