Unity中自動(dòng)發(fā)送郵件功能
2021-09-27 06:35 作者:TenderRain- | 我要投稿
記個(gè)筆記
因項(xiàng)目需求需要做一個(gè)發(fā)送帶有附件的郵件功能,話不多說(shuō)先上核心代碼,最后會(huì)說(shuō)遇到的坑
private void Send()
? ?{
? ? ?//判斷輸入的字符串是否是郵箱
? ? ? ?if (IsEmail(EmailText.text)&& !IsSending)
? ? ? ?{
? ? ? ? ? ?IsSending = true;
? ? ? ? ? ?MailMessage mail = new MailMessage();
? ? ? ? ?//設(shè)置發(fā)件人郵箱
? ? ? ? ? ?mail.From = new MailAddress("no-reply@qq.com");
//設(shè)置收件人郵箱地址
? ? ? ? ? ?mail.To.Add(EmailText.text);
? ? ? ? ? ?if (cCEmailManager != null)
? ? ? ? ? ?{
? ? ? ? ? ? ? ?foreach (var email in cCEmailManager.CCEmailList)
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ?//設(shè)置抄送人郵箱地址
? ? ? ? ? ? ? ? ? ?mail.CC.Add(email.CCEmailAccount);
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ? ?//設(shè)置郵件內(nèi)容
? ? ? ? ? ?string content = string.Empty;
? ? ? ? ? ?if (TitleText != null && TitleText.text != string.Empty)
? ? ? ? ? ?{
? ? ? ? ? ? ? ?content = TitleText.text;
? ? ? ? ? ?}
? ? ? ? ? ?else
? ? ? ? ? ?{
? ? ? ? ? ? ? ?content = ExportDatas.Instance.GetFileName();
? ? ? ? ? ?}
? ? ? ? ?//設(shè)置主體的字符編碼
? ? ? ? ? ?mail.BodyEncoding = System.Text.Encoding.UTF8;
? ? ? ? ?//設(shè)置郵件標(biāo)題
? ? ? ? ? ?mail.Subject = content;
? ? ? ? ?//設(shè)置郵件內(nèi)容
? ? ? ? ? ?mail.Body = content;
? ? ? ? ?//下面是創(chuàng)建設(shè)置發(fā)件人郵箱的類型端口密碼等
? ? ? ? ? ?SmtpClient smtpServer = new SmtpClient(/*"smtp.qq.com"*/"smtp.exmail.qq.com");
? ? ? ? ? ?//smtpServer.Port = 465/*587*/;
? ? ? ? ? ?smtpServer.Credentials = new System.Net.NetworkCredential("no-reply@qq.com", "xxxxxx") as ICredentialsByHost;
? ? ? ? ? ?smtpServer.EnableSsl = true;
? ? ? ? ? ?ServicePointManager.ServerCertificateValidationCallback =
? ? ? ? ? ? ? ?delegate (object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
? ? ? ? ? ? ? ?{ return true; };
? ? ? ? ?//下面是添加郵件附件
? ? ? ? ? ?mail.Attachments.Add(new Attachment(ExportDatas.Instance.GetFilePath()));
? ? ? ? ?//下面添加發(fā)送完成的回調(diào),方法自己寫
? ? ? ? ? ?smtpServer.SendCompleted += new SendCompletedEventHandler(SendEmailCompleted);
? ? ? ? ? ?if (SendTips != null) SendTips.gameObject.SetActive(true);
? ? ? ? ? ?if (SendingTips != null) SendingTips.gameObject.SetActive(true);
? ? ? ? ? ?if (SendCompletedTips != null) SendCompletedTips.gameObject.SetActive(false);
? ? ? ? ? ?Debug.Log("發(fā)送中");
? ? ? ? ? ?smtpServer.SendMailAsync(mail);
? ? ? ?}
? ? ? ?else
? ? ? ?{
? ? ? ? ? ?//IsSending = false;
? ? ? ? ? ?UIToastTool.Instance.Show("請(qǐng)?zhí)顚懻_的郵箱地址");
? ? ? ?}
? ?}
基本上發(fā)送郵件的核心代碼就上面這塊,下面說(shuō)下遇到的坑
1、設(shè)置發(fā)件人郵箱類型端口等的時(shí)候,如果是個(gè)人的QQ郵箱,那么設(shè)置端口沒(méi)問(wèn)題,如果是騰訊企業(yè)郵箱請(qǐng)把端口設(shè)置去掉,雖然官方文檔上有寫需要設(shè)置端口,但是一旦設(shè)置就會(huì)發(fā)送失敗。
2、發(fā)件人密碼并不是真實(shí)的注冊(cè)郵箱時(shí)填寫的登入密碼,而是設(shè)置能自動(dòng)發(fā)送郵件權(quán)限時(shí)生產(chǎn)的編碼,至于怎么設(shè)置權(quán)限,根據(jù)不同的郵箱類型請(qǐng)去具體的官方文檔中查看
3、發(fā)送郵件成功的回調(diào)會(huì)與一些代碼沖突,例如他會(huì)和?windows提供的下面這個(gè)選擇文件機(jī)夾位置的方法沖突?,導(dǎo)致會(huì)接收不到回調(diào)信息
//System.Windows.Forms.FolderBrowserDialog fbd = new System.Windows.Forms.FolderBrowserDialog();
標(biāo)簽: