引用

using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Net.Mail;
using System.Text;
using System.Threading.Tasks;
using Wzdq.DataTransitService.Email;
using Wzdq.DataTransitService.Extention;

代码

/// <summary>/// 邮箱帮助类/// </summary>public class EmailHelp{private readonly IConfiguration configuration;//邮箱账号private readonly string _from = string.Empty;//邮箱名private readonly string _fromName = string.Empty;//smtp服务器IPprivate readonly string _smtp = string.Empty;//服务器端口private readonly int _port = 0;//密码private readonly string _pwd = string.Empty;/// <summary>/// 构造函数/// </summary>public EmailHelp(){configuration = ConfigUtil.Configuration;_from = configuration["Smtp:From"];if (_from.IsNullOrEmpty()){throw new ArgumentException($"{nameof(_from)} must have a value");}_fromName = configuration["Smtp:Fromname"];if (_fromName.IsNullOrEmpty()){throw new ArgumentException($"{nameof(_fromName)} must have a value");}_smtp = configuration["Smtp:Ip"];if (_smtp.IsNullOrEmpty()){throw new ArgumentException($"{nameof(_smtp)} must have a value");}_port = configuration["Smtp:Port"].ToInt();_pwd = configuration["Smtp:Passwd"];if (_pwd.IsNullOrEmpty()){throw new ArgumentException($"{nameof(_pwd)} must have a value");}}/// <summary>/// 发送邮件/// </summary>/// <param name="emailMessage"></param>/// <returns></returns>public async Task<Tuple<bool,string>> SendMail(EmailMessage emailMessage){if (emailMessage is null){throw new ArgumentNullException(nameof(emailMessage));}if (emailMessage.ToSend == null || emailMessage.ToSend.Length == 0){throw new ArgumentNullException(nameof(emailMessage.ToSend));}try{System.Net.Mail.MailMessage myMail = new System.Net.Mail.MailMessage();myMail.From = new System.Net.Mail.MailAddress(_from, _fromName, System.Text.Encoding.UTF8); //发件人邮箱,发件人名称,编码格式for (int i = 0; i < emailMessage.ToSend.Length; i++){myMail.To.Add(new System.Net.Mail.MailAddress(emailMessage.ToSend[i]));//循环添加所有收件人邮箱地址}if (emailMessage.CCSend != null){for (int i = 0; i < emailMessage.CCSend.Length; i++){myMail.CC.Add(new System.Net.Mail.MailAddress(emailMessage.CCSend[i]));}}myMail.Subject = emailMessage.G_EmailSubject;myMail.SubjectEncoding = Encoding.UTF8;myMail.Body = emailMessage.G_EmailBody;myMail.BodyEncoding = Encoding.UTF8;myMail.Priority = MailPriority.High;//优先级设置为高myMail.IsBodyHtml = true;//是否html格式if (emailMessage.FilesSend != null){for (int i = 0; i < emailMessage.FilesSend.Length; i++){myMail.Attachments.Add(new Attachment(emailMessage.FilesSend[i]));}}SmtpClient smtp = new(){Host = _smtp,Port = _port,//发送邮件的端口号 一般为25EnableSsl = true,UseDefaultCredentials = false,//一定要写在下面这句的前面Credentials = new System.Net.NetworkCredential(_from, _pwd),//如果发件人邮箱开启了smtp,密码则输入邮箱客户端授权码DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network};await smtp.SendMailAsync(myMail);//发送}catch (Exception e){return new Tuple<bool, string>(false, e.Message);}return new Tuple<bool, string>(true, string.Empty);}}
public class EmailMessage{/// <summary>/// 收件人/// </summary>public string G_EmailTo { get; set; }/// <summary>/// 收件人/// </summary>public string[] ToSend{get{if (string.IsNullOrEmpty(G_EmailTo)){return null;}else{return G_EmailTo.Split("*");}}set { }}/// <summary>/// 抄送人/// </summary>public string G_EmailCC { get; set; }/// <summary>/// 抄送人/// </summary>public string[] CCSend{get{if (string.IsNullOrEmpty(G_EmailCC)){return null;}else{return G_EmailCC.Split("*");}}set { }}/// <summary>/// 主题/// </summary>public string G_EmailSubject { get; set; }/// <summary>/// 内容/// </summary>public string G_EmailBody { get; set; }/// <summary>/// 文件绝对路径/// </summary>public string G_EmailFiles { get; set; }/// <summary>/// 文件绝对路径/// </summary>public string[] FilesSend{get{if (string.IsNullOrEmpty(G_EmailFiles)){return null;}else{return G_EmailFiles.Split("*");}}set { }}}

配置帮助类

public static class ConfigUtil{private static IConfiguration _config;public static IServiceProvider ServiceProvider { get; set; }/// <summary>/// /// </summary>public static IConfiguration Configuration{get{if (_config != null) return _config;_config = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).Add(new JsonConfigurationSource{Path = "appsettings.json",ReloadOnChange = true}).Build();return _config;}set => _config = value;}/// <summary>///     Gets a configuration sub-section with the specified key./// </summary>/// <param name="key">The key of the configuration section.</param>/// <returns>The <see cref="T:Microsoft.Extensions.Configuration.IConfigurationSection" />.</returns>/// <remarks>///     This method will never return <c>null</c>. If no matching sub-section is found with the specified key,///     an empty <see cref="T:Microsoft.Extensions.Configuration.IConfigurationSection" /> will be returned./// </remarks>public static IConfigurationSection GetSection(string key){return Configuration?.GetSection(key);}/// <summary>/// /// </summary>/// <param name="name"></param>/// <returns></returns>public static string GetConnectionString(string name){return Configuration.GetConnectionString(name);}/// <summary>///     Gets the immediate descendant configuration sub-sections./// </summary>/// <returns>The configuration sub-sections.</returns>public static IEnumerable<IConfigurationSection> GetChildren(){return Configuration?.GetChildren();}}

C# 邮件发送帮助类相关推荐

  1. 封装一个邮件发送工具类,一个字,巴适

    系列文章目录 文章目录 系列文章目录 前言 一. 介绍 二.二话不说开始干 1.引入库 2. 邮件发送实体(Mail) 3. 邮件发送类型枚举(MailType ) 4.邮件发送抽象类(Abstrac ...

  2. Java 基于mail.jar 和 activation.jar 封装的邮件发送工具类

    准备工作 发送邮件需要获得协议和支持! 开启服务 POP3/SMTP 服务 如何开启 POP3/SMTP 服务:https://blog.csdn.net/weixin_44953227/articl ...

  3. JAVA 邮件发送工具类

    1.封装邮件接收地址MODEL和邮件信息MODEL package com.sicdt.jnzxgzc.common.mail.model;import java.io.Serializable; / ...

  4. exchange无法收发邮件_SpringBoot2.x系列教程69--SpringBoot中整合邮件发送

    SpringBoot2.x系列教程69--SpringBoot中整合邮件发送 作者:一一哥 注: 本文案例以QQ邮箱发送的实现为例! 一. 邮件发送概述 1. 概述 在Spring框架中提供了一个Ja ...

  5. [Java工具] 邮件发送工具

    注册邮箱 去163邮箱(或其他邮箱)注册一个邮箱,并开启SMTP授权码. 程序 需要注意的是,由于阿里云服务器不让使用默认的25端口,所以会出现Windows下测试发送邮件成功,Linux服务器下发送 ...

  6. 10-10-定时邮件发送

    一.邮件发送工具类实现 创建一个用于邮件发送服务的工具类MailUtils,并编写一个发送简单邮件的方法 @Component public class MailUtils { @Autowired ...

  7. exchange无法收发邮件_SpringBoot2.x系列教程69--SpringBoot中整合Mail实现邮件发送

    SpringBoot2.x系列教程69--SpringBoot中整合邮件发送 作者:一一哥 注: 本文案例以QQ邮箱发送的实现为例! 一. 邮件发送概述 1. 概述 在Spring框架中提供了一个Ja ...

  8. 利用hutool实现邮件发送功能

    如何利用hutool工具包实现邮件发送功能呢? 1.首先引入hutool依赖 <dependency><groupId>cn.hutool</groupId>< ...

  9. Email邮件发送设置 工具开发整理(网易邮箱、Mailgun为例) 下篇

    Email邮件设置(网易邮箱.Mailgun)  下篇 说明:STMP服务邮件发送工具类,其中包括文本发送.html发送.附件发送. 1.maven pom 配置 <dependency> ...

最新文章

  1. 无人机、IoT 设备都有漏洞?专访以色列老牌安全企业Check Point | 拟合
  2. 符号化Symbol(符号)体系(转载)
  3. 在Window上使用Jenkins自动发布Java工件
  4. Nginx笔记-关于nginx.conf中proxy_pass中末尾不加/的坑
  5. 忘记mysql的root密码后,修改密码
  6. python导入dat数据_Kaggle影评数据集,Python数据分析小例子14
  7. csv数据去重 python_数据去重_Python数据分析实战应用_数据挖掘与分析视频-51CTO学院...
  8. 2017.6.26 接口测试工具postman使用总结
  9. Unity3D 世界坐标转屏幕坐标的坑
  10. Qt: 解决Qt语言家 更新翻译(lupdate) 非常慢卡死没反应现象
  11. ios 调整麦克风音量_我的iphone手机话筒声音特别小,如何调大?
  12. css固定定位如何基于父级来定为而不是视口
  13. python使用turtle库绘制奥运五环
  14. 店宝宝:电视剧“拼刀刀”梗引热议 拼多多紧急注册商标为哪版?
  15. 如何创建一个进度条控件
  16. 广义最小二乘法的基本思想是什么_解决异方差问题的方法可行广义最小二乘法fgls法.ppt...
  17. 黑客利用WordPress 插件暗中建立后门网站
  18. Unity TouchScripts实例 - 判断在物体上滑动
  19. 小米air2se耳机只有一边有声音怎么办_小米耳机只有一边有声音,这问题怎么解决...
  20. tws耳机哪个牌子音质好?tws耳机音质排行榜

热门文章

  1. python、前端vue——全栈——vscode插件
  2. 企业与政府信息资源管理
  3. 关闭无限局域网配置服务器,无线局域网无线控制器MAC地址过滤配置实例-Cisco.PDF...
  4. 李嘉诚收购英国电信公司遭英国官方要求封杀
  5. 英国电信公司O2寻求上市
  6. Pro-Level Photography for Graphic Designers 平面设计师专业摄影教程 Lynda课程中文字幕
  7. 杨澜写给女儿的十四条人生忠告
  8. nginx阻挡flv视频文件上传解决方案
  9. PHP 导出Excel的csv格式数字会自动变科学计数法 日期2019-04变成2019/4/1
  10. 总有你不知道的,你说呢?