首先我使用的是QQ邮箱 所以登录qq邮箱后我要开启授权码服务以便获取授权码
点击账户 然后拉到最下边,开启服务 获取授权码
代码调试
模板
/// <summary>
/// 邮箱模板 --仅供参考
/// </summary>
public class EmailModel
{
/// <summary>
/// 收件人邮箱
/// </summary>
public const string ToMial = "123456@163.com";
/// <summary>
/// 发件人邮箱
/// </summary>
public const string FromMial = "123456@qq.com";
/// <summary>
/// 发件人邮箱帐号 如QQ邮箱 为QQ号码
/// </summary>
public const string UserID = "123456";
/// <summary>
/// 发件人邮箱受权码
/// </summary>
public const string UserPwd = "**********";
/// <summary>
/// 邮件服务地址 如QQ邮箱服务地址为smtp.qq.com
/// 网易邮箱服务地址为smtp.163.com
/// </summary>
public const string ServerAddress = "smtp.qq.com";
/// <summary>
/// 邮件主题/标题
/// </summary>
public const string Subject = "邮件通知";
/// <summary>
/// 邮件内容
/// </summary>
public const string Content = "消息内容";
public const string FilePath = "";
}
主代码
#region 邮箱发送
//参考代码:http://www.luofenming.com/show.aspx?id=ART2017111400001
// 创建一个邮件对象
using var mailObject = new MailMessage();
// 设置发件人邮箱
mailObject.From = new MailAddress(EmailModel.FromMial);
// 设置收件人
mailObject.To.Add(new MailAddress(EmailModel.ToMial!));
// 设置邮件主题和内容
mailObject.SubjectEncoding = Encoding.UTF8;
mailObject.Subject = EmailModel.Subject;
mailObject.BodyEncoding = Encoding.UTF8;
mailObject.Body = EmailModel.Content;
// 创建一个发送邮件的客户端对象
using var smtpClient = new SmtpClient();
smtpClient.Host = EmailModel.ServerAddress!;
//smpt 默认端口
smtpClient.Port = 587;
smtpClient.Credentials = new NetworkCredential(EmailModel.UserID, EmailModel.UserPwd);
//文件不为空则附带文件
if (!string.IsNullOrWhiteSpace(EmailModel.FilePath))
{
Attachment amen = new Attachment(@"C:\Users\lqwvje\Desktop\新建文本文档.txt");
mailObject.Attachments.Add(amen);
}
// 发送邮件
await smtpClient.SendMailAsync(mailObject);
#endregion
Console.ReadKey();
这里有一点要说明一下 smtp的端口号要设置一下,因为小编当时本地代码运行只需要有ip就可以发送短信,但是发布到服务器的时候运行接口 是发不出的 百度得知:因为邮件统一的默认端口是25,有些服务器上是需要申请开通这个端口,
阿里云服务25端口的屏蔽策略和普通的安全策略不同,无法通过配置安全组规则的方式来进行开放,如果需要开放25端口,需要向阿里云进行申诉,这是一种比较麻烦的处理方法。
具体的阿里云25端口申诉方法,可以参考:https://help.aliyun.com/knowledge_detail/56130.html
所以在使用smpt的时候会有介绍,邮件服务器ip会有对应的端口,这里看一下smtp的