发送邮件需要用到System.Net.Mail命名空间下的MailMessage和SmtpClient类,smtp是一种提供可靠且有效的电子邮件传输协议,是建立在FTP文件传输服务上的一种邮件服务。下面封装一个Email类,声明MailMessage和SmtpClient字段:
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服务并获取授权码:
有了上述信息后,封装发送邮件所用的函数:
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}");
}
}
}
}
测试:
using UnityEngine;
using SK.Framework;
public class Foo : MonoBehaviour
{
private void Start()
{
Mailer.Send("邮件标题:测试", "邮件内容:测试asdfg", "136512892@qq.com");
}
}
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有