Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Unity 如何在程序中发送Email邮件

Unity 如何在程序中发送Email邮件

作者头像
CoderZ
发布于 2022-08-29 08:06:42
发布于 2022-08-29 08:06:42
99500
代码可运行
举报
运行总次数:0
代码可运行

发送邮件需要用到System.Net.Mail命名空间下的MailMessage和SmtpClient类,smtp是一种提供可靠且有效的电子邮件传输协议,是建立在FTP文件传输服务上的一种邮件服务。下面封装一个Email类,声明MailMessage和SmtpClient字段:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System;
using System.Net.Mail;

namespace SK.Framework
{
    /// <summary>
    /// 邮件
    /// </summary>
    public sealed class Email : IDisposable
    {
        public MailMessage MailMessage;
        /// <summary>
        /// Smtp Client
        /// Smtp : 简单邮件传输协议(Simple Mail Transfer Protocol)
        /// </summary>
        public SmtpClient SmtpClient;

        public void Dispose()
        {
            MailMessage.Dispose();
            SmtpClient.Dispose();
        }
    }
}

发送邮件需要提供发送所使用的邮箱,以QQ邮箱为例:首先需要QQ邮箱SMTP服务器主机地址信息:

然后需要所用邮箱的账号和密码,此处密码并不是指真实的邮箱密码,而是用于第三方客户端登录的授权码,需要到QQ邮箱的设置中开启SMTP服务并获取授权码:

有了上述信息后,封装发送邮件所用的函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using System;
using System.Net;
using System.Text;
using UnityEngine;
using System.Net.Mail;

namespace SK.Framework
{
    public static class Mailer
    {
        //邮箱服务器主机,根据使用的发送邮箱,使用其对应的服务器主机 例如 QQ邮箱服务器主机 smtp.qq.com
        private readonly static string host = "smtp.qq.com";
        //邮箱服务器主机端口
        private readonly static int port = 25;
        //发送邮件所用邮箱
        private static string senderEmail = "*********@qq.com";
        //发送邮件所用邮箱的密码 (第三方客户端登录授权码)
        private static string password = "****************";

        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="subject">主题</param>
        /// <param name="body">主体</param>
        /// <param name="toEmail">接收邮箱</param>
        /// <param name="callback">回调</param>
        public static void Send(string subject, string body, string toEmail, Action callback = null)
        {
            using(var email = new Email()
            {
                MailMessage = new MailMessage()
                {
                    From = new MailAddress(senderEmail),
                    Subject = subject,
                    Body = body,
                    SubjectEncoding = Encoding.UTF8,
                    BodyEncoding = Encoding.UTF8,
                    IsBodyHtml = false,
                },
                SmtpClient = new SmtpClient()
                {
                    Host = host,
                    Port = port,
                    UseDefaultCredentials = false,
                    Credentials = new NetworkCredential(senderEmail, password),
                    EnableSsl = false,
                    DeliveryMethod = SmtpDeliveryMethod.Network
                }
            })
            {
                email.MailMessage.To.Add(new MailAddress(toEmail));
                email.SmtpClient.SendCompleted += (s, e) => callback?.Invoke();
                email.SmtpClient.SendMailAsync(email.MailMessage);
                Debug.Log($"发送邮件:接收人 - {toEmail} 主题 - {subject} 内容 - {body}");
            }
        }
        /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="subject">主题</param>
        /// <param name="body">主体</param>
        /// <param name="toEmails">接收邮箱</param>
        /// <param name="callback">回调</param>
        public static void Send(string subject, string body, string[] toEmails, Action callback = null)
        {
            using(var email = new Email()
            {
                MailMessage = new MailMessage()
                {
                    From = new MailAddress(senderEmail),
                    Subject = subject,
                    Body = body,
                    SubjectEncoding = Encoding.UTF8,
                    BodyEncoding = Encoding.UTF8,
                    IsBodyHtml = false
                },
                SmtpClient = new SmtpClient()
                {
                    Host = host,
                    Port = port,
                    UseDefaultCredentials = false,
                    Credentials = new NetworkCredential(senderEmail, password),
                    EnableSsl = false,
                    DeliveryMethod = SmtpDeliveryMethod.Network
                }
            })
            {
                for (int i = 0; i < toEmails.Length; i++)
                {
                    email.MailMessage.To.Add(new MailAddress(toEmails[i]));
                }
                email.SmtpClient.SendCompleted += (s, e) => callback?.Invoke();
                email.SmtpClient.SendMailAsync(email.MailMessage);
                Debug.Log($"群发邮件:主题 - {subject} 内容 - {body}");
            }
        }
    }
}

测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
using UnityEngine;
using SK.Framework;

public class Foo : MonoBehaviour
{
    private void Start()
    {
        Mailer.Send("邮件标题:测试", "邮件内容:测试asdfg", "136512892@qq.com");
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 当代野生程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
邮件发送功能开发
作为一名.Net开发,"邮件发送"功能的开发和使用是必须要掌握的,因为这个功能作为“消息推送”的一种手段经常出现在各种.Net系统中,所以本文将对.Net平台下的“邮件发送”,做一个细致的分析! 一、who需要邮件功能 1、服务提供方:需提供邮件收发客户端或Web服务。如:QQ邮箱、GMail邮箱、126、163等知名邮件服务提供商。注:如果你使用的第三方不知名邮件服务商提供的邮件收发服务,通过其发出的邮件,可能会被其他知名邮件服务提供商的STMP服务器视为是"恶意邮件或垃圾邮件"! 2、消息推送:消息推送
郑小超.
2018/01/26
4.1K0
.net下发送Email的Helper类一、适用场景二、代码三、调用方法四、结束
前段时间因为业务需要自动给客户发送支持HTML格式的而且带附件的Email,而且使用的还是Office365邮箱,就抽时间看了一下这方面的内容,并写了这个帮助类。 该类是使用的SMTP服务发送Email,可以支持OFFICE365等邮箱,支持SSL、HTML邮件、附件等。目前未启用加密的常规发送和使用Office365邮箱发送都已经测试通过。 该代码目前是使用在.net 4.0环境下,理论上.net 4.0~.net 4.7都可以使用,.net core下没有测试。
徐大嘴
2019/03/21
7330
ASP.NET(C#) 发送邮件帮助类Mailhelper
using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; u
KenTalk
2018/09/11
1.4K0
结合ABP源码实现邮件发送功能
1. 前言 最近pm临时提出了多种邮件验证操作的需求,因为一时间也没有找到好的邮件收发组件,也抱着研究ABP的心态,就花了几小时时间探究了一下ABP中关于Email的处理和操作。其实邮件操作大多大同小异,这次只是希望介绍一下ABP中实现功能的代码结构而已,以下是具体过程 演示的ABP代码版本为0.9.0.0,不过后面版本对于这部分的修改较少,所以完全不影响之后版本的移植使用 2. 实现过程 ABP的Mail操作放在了Abp.Net.Mail和Abp.Net.Mail.Smtp中,第一步先让我们直接看
潘成涛
2018/01/18
1.2K0
结合ABP源码实现邮件发送功能
使用.Net发电子邮件小结
电子邮件是通过互联网发出去的,互联网中传输层协议有TCP/IP协议,邮件服务在基于TCP/IP底层协议之上的应用层实现SMTP、POP3、IMAP4等协议,通过这些协议实现了邮件的收发服务。
小蜜蜂
2019/08/06
1.7K0
使用.Net发电子邮件小结
c#发送邮件含附件
在网上巴拉巴拉找个的,然后修改了下,测试可用 using System; using System.Collections.Generic; using System.Text; using System.Net.Mail; using System.Net.Mime; using System.Net; namespace CustomerDetails { public class SendEmail { private MailMessage mailMessage;
冰封一夏
2019/09/10
1.2K0
C#接入SMTP邮件服务
功能类已经写好了,每个方法对应有注释,不需要动,除非你要更改smtp服务器,默认QQ邮箱
JanYork_简昀
2022/03/29
7970
C#接入SMTP邮件服务
c# 发送Email的2中方式
我相信大多数人发送邮件使用第二种,但是有时候第二种方式是发不出去的,那么什么情况发布出去呢???
冰封一夏
2019/09/11
5400
ASP.NET 实现发送邮件 + 多个收件人 + 多个附件
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/42011431
DannyHoo
2018/09/13
2.1K0
ASP.NET 实现发送邮件 + 多个收件人 + 多个附件
MYSQL自动备份并发送邮件工具
最近在开发小程序,由于服务器只有一台,所以不能数据库异机备份,出于数据安全的考虑,就做了一个数据库定时备份并发送邮件到自己的邮箱的小工具,先看下工具界面
code2roc
2023/07/19
3310
MYSQL自动备份并发送邮件工具
【.NET】几行代码实现自动发送邮件功能
前言:邮件自动发送功能应该场景比较多,例如遇到程序bug、或者运行报告等,补获到就发送邮件提醒。或者其他用途。
Wesky
2024/08/13
2000
【.NET】几行代码实现自动发送邮件功能
使用 MimeKit 和 MailKit 发送邮件
MimeKit 给.NET 社区带来了一流的 MIME 解析器,它能处理复杂的各种Mime, 性能好。而且开箱即用支持 S/MIME 和 PGP。MimeKit 和 MailKit 支持最新的国际化的电子邮件标准,是.NET 中为一个支持完整支持这些标准电子邮件库,最近正式发布了1.0版本。如果你想做所有与的电子邮件相关的事情,看看 MimeKit 和 MailKit。我保证你不会失望,它支持.NET/Mono的所有平台,包括移动电话、平板等。 使用方法很简单和.NET的SmtpClient 差不多,不过比
张善友
2018/01/29
2.2K0
VB.NET 发送QQ邮件,可用于发送验证码和批量文件,通知信息
首先打开邮箱的POP3/IMAP/SMTP,获取邮箱授权码,具体操作如下:
办公魔盒
2019/08/28
1.7K0
VB.NET 发送QQ邮件,可用于发送验证码和批量文件,通知信息
.Net魔法堂:发个带附件的邮件
一、前言                             由于工作需要最近把邮件发送封装成WebService,现在把代码记录在此,以便日后查阅。 二、二话不说写代码                     private void _SendMail(string form, string pw, string subject, string[] to, string[] cc, string body, string attachmentName, byte[] attachment)
^_^肥仔John
2018/01/18
6820
C#邮件发送类 简单实用 可自定义发件人名称
上图看效果 MailHelper: public class MailHelper { public bool SendMail(MailSender sender,out s
晓晨
2018/06/22
1.2K0
System.Net.Mail.SmtpClient通过SSL/TLS协议发送邮件失败问题解决
通过System.Net.Mail使用SSL协议发送邮件失败并报错 System.Net.Mail.SmtpException: Failure sending mail
KenTalk
2020/03/05
1.7K0
ASP.Net 2.0 发送邮件的代码
这两天因为要做一个可以收集用户提交信息,然后发送邮件到指定邮箱的网页。在asp.net2.0里网络
Java架构师必看
2021/03/22
2K0
ASP和ASP.NET发送邮件笔记
    这两天因公司网站邮件发不出去,然后研究了在asp网站发送邮件和在asp.net网站发送邮件的代码,把碰到的问题这里记录一下。
tandaxia
2018/09/27
7.7K0
ASP和ASP.NET发送邮件笔记
C#通过邮箱验证来找回密码
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
喜欢ctrl的cxk
2019/11/08
1.6K0
发送邮件程序(Csharp2005)
我觉得懂得编写发送邮件客服端丰常重要.这可以把它嵌入到你的软件里加强与用户的沟通与可以收集程运行的错误信息.以与我编写一小的发送邮件客服端来与在家交流. 程序如下:
Java架构师必看
2021/03/22
5970
发送邮件程序(Csharp2005)
相关推荐
邮件发送功能开发
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验