• 【.net/.net core】发送邮件方法


    具体实现逻辑为申请一个授权的发送邮箱,利用该邮箱从代码层面实现邮箱中的邮件发送功能 

    1. #region 发送邮件
    2. ///
    3. /// 发送邮件方法
    4. ///
    5. /// 邮件标题
    6. /// 邮件内容
    7. /// 发件人邮箱
    8. /// 收件人邮箱(多个收件人地址用";"号隔开)
    9. /// 发件人授权码(需要通过在邮箱设置中获取)
    10. /// 对方回复邮件时默认的接收地址(不设置也是可以的)
    11. /// //邮件的抄送者(多个抄送人用";"号隔开)(不设置也是可以的)
    12. /// 附件的地址(不设置也是可以的)
    13. public static void SendMail(string Subject, string Body, string FromMail, string ToMail, string AuthorizationCode, string ReplyTo, string CCMail, string File_Path)
    14. {
    15. try
    16. {
    17. //实例化一个发送邮件类。
    18. System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage();
    19. mailMessage.IsBodyHtml = true;
    20. mailMessage.BodyEncoding = System.Text.Encoding.UTF8;
    21. //邮件的优先级,分为 Low, Normal, High,通常用 Normal即可
    22. mailMessage.Priority = MailPriority.Normal;
    23. //发件人邮箱地址。
    24. mailMessage.From = new MailAddress(FromMail);
    25. //收件人邮箱地址。需要群发就写多个
    26. //拆分邮箱地址
    27. List<string> ToMaillist = ToMail.Split(';').ToList();
    28. for (int i = 0; i < ToMaillist.Count; i++)
    29. {
    30. mailMessage.To.Add(new MailAddress(ToMaillist[i])); //收件人邮箱地址。
    31. }
    32. if (ReplyTo == "" || ReplyTo == null)
    33. {
    34. ReplyTo = FromMail;
    35. }
    36. //对方回复邮件时默认的接收地址(不设置也是可以的哟)
    37. mailMessage.ReplyTo = new MailAddress(ReplyTo);
    38. if (CCMail != "" && CCMail != null)
    39. {
    40. List<string> CCMaillist = ToMail.Split(';').ToList();
    41. for (int i = 0; i < CCMaillist.Count; i++)
    42. {
    43. //邮件的抄送者,支持群发
    44. mailMessage.CC.Add(new MailAddress(CCMail));
    45. }
    46. }
    47. //如果你的邮件标题包含中文,这里一定要指定,否则对方收到的极有可能是乱码。
    48. mailMessage.SubjectEncoding = Encoding.UTF8;
    49. //邮件正文是否是HTML格式
    50. mailMessage.IsBodyHtml = false;
    51. //邮件标题。
    52. mailMessage.Subject = Subject;
    53. //邮件内容。
    54. mailMessage.Body = Body;
    55. //设置邮件的附件,将在客户端选择的附件先上传到服务器保存一个,然后加入到mail中
    56. if (File_Path != "" && File_Path != null)
    57. {
    58. //将附件添加到邮件
    59. mailMessage.Attachments.Add(new Attachment(File_Path));
    60. //获取或设置此电子邮件的发送通知。
    61. mailMessage.DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess;
    62. }
    63. //实例化一个SmtpClient类。
    64. SmtpClient client = new SmtpClient();
    65. #region 设置邮件服务器地址
    66. //在这里我使用的是163邮箱,所以是smtp.163.com,如果你使用的是qq邮箱,那么就是smtp.qq.com。
    67. // client.Host = "smtp.163.com";
    68. if (FromMail.Length != 0)
    69. {
    70. //根据发件人的邮件地址判断发件服务器地址 默认端口一般是25
    71. string[] addressor = FromMail.Trim().Split(new Char[] { '@', '.' });
    72. switch (addressor[1])
    73. {
    74. case "163":
    75. client.Host = "smtp.163.com";
    76. break;
    77. case "126":
    78. client.Host = "smtp.126.com";
    79. break;
    80. case "qq":
    81. client.Host = "smtp.qq.com";
    82. break;
    83. case "gmail":
    84. client.Host = "smtp.gmail.com";
    85. break;
    86. case "hotmail":
    87. client.Host = "smtp.live.com";//outlook邮箱
    88. //client.Port = 587;
    89. break;
    90. case "foxmail":
    91. client.Host = "smtp.foxmail.com";
    92. break;
    93. case "sina":
    94. client.Host = "smtp.sina.com.cn";
    95. break;
    96. default:
    97. client.Host = "smtp.exmail.qq.com";//qq企业邮箱
    98. break;
    99. }
    100. }
    101. #endregion
    102. //使用安全加密连接。
    103. client.EnableSsl = true;
    104. //不和请求一块发送。
    105. client.UseDefaultCredentials = false;
    106. //验证发件人身份(发件人的邮箱,邮箱里的生成授权码);
    107. client.Credentials = new NetworkCredential(FromMail, AuthorizationCode);
    108. //如果发送失败,SMTP 服务器将发送 失败邮件告诉我
    109. mailMessage.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
    110. //发送
    111. client.Send(mailMessage);
    112. Console.WriteLine("发送成功");
    113. }
    114. catch (Exception ex)
    115. {
    116. Console.WriteLine("发送失败" + ex.Message);
    117. }
    118. }
    119. #endregion

  • 相关阅读:
    PD虚拟机(Parallels Desktop)2024mac苹果电脑19免费版下载
    Spring()
    Leetcode.2867 统计树中的合法路径数目
    贪心算法之找零钱
    骚操作:巧用MySQL主从复制延迟拯救误删数据
    IP179N NI H Hl参考资料和引脚图
    深度学习 opencv python 公式识别(图像识别 机器视觉) 计算机竞赛
    linux驱动.之 网络udp应用层测试工具demon(一)
    【sciter】安全应用列表控件总结
    终于有清华大佬把“:JVM入门以及Class格式”给大家讲解透彻了
  • 原文地址:https://blog.csdn.net/MoFe1/article/details/134034257