Пример #1
0
        private static async Task <ActionResponse> DoSend(string MailFrom, string RcptTo, string MessageContent)
        {
            var setting = await Settings.GetSendSetting(Data.AppSettings.ServerSetting, Data.AppSettings.IsOnlineServer, MailFrom, RcptTo);

            Kooboo.Data.Log.Instance.Email.Write("-- sending \r\n");
            Data.Log.Instance.Email.Write(MailFrom + " to: " + RcptTo);

            if (!setting.OkToSend)
            {
                return(new ActionResponse()
                {
                    Success = false, Message = setting.ErrorMessage, ShouldRetry = false
                });
            }

            using (var sendClient = new Kooboo.Mail.Smtp.SmtpClient(setting.LocalIp))
            {
                if (setting.UseKooboo)
                {
                    Kooboo.Data.Log.Instance.Email.Write(setting.KoobooServerIp + " " + setting.Port);

                    await sendClient.Connect(setting.KoobooServerIp, setting.Port);
                }
                else
                {
                    foreach (var item in setting.Mxs)
                    {
                        Kooboo.Data.Log.Instance.Email.Write(item);

                        try
                        {
                            await sendClient.Connect(item, 25);

                            break;
                        }
                        catch (System.Exception ex)
                        {
                            Data.Log.Instance.Email.WriteException(ex);

                            // Kooboo.Mail.Smtp.Log.LogInfo(ex.Message + ex.StackTrace + ex.Source);
                        }
                    }
                }

                if (!sendClient.Connected)
                {
                    string msg = "Can not connect to remote mail server";
                    return(new ActionResponse()
                    {
                        Success = false, ShouldRetry = true, Message = msg
                    });
                }

                return(await Send(sendClient, MailFrom, RcptTo, MessageContent, setting));
            }
        }
Пример #2
0
        private static async Task <ActionResponse> Send(Kooboo.Mail.Smtp.SmtpClient client, string mailFrom, string rcptTo, string content, SendSetting setting)
        {
            var reply = await client.CheckServiceReady();

            if (!reply.Ok)
            {
                client.Release();
                return(new ActionResponse()
                {
                    Success = false, ShouldRetry = true, Message = reply.Reply
                });
            }

            reply = await client.Helo(setting.HostName);

            if (!reply.Ok)
            {
                client.Release();
                return(new ActionResponse()
                {
                    Success = false, ShouldRetry = true, Message = reply.Reply
                });
            }

            reply = await client.MailFrom(mailFrom);

            if (!reply.Ok)
            {
                client.Release();
                return(new ActionResponse()
                {
                    Success = false, ShouldRetry = false, Message = reply.Reply
                });
            }

            reply = await client.RcptTo(rcptTo);

            if (!reply.Ok)
            {
                client.Release();
                return(new ActionResponse()
                {
                    Success = false, ShouldRetry = false, Message = reply.Reply
                });
            }

            reply = await client.Data(content);

            if (!reply.Ok)
            {
                client.Release();

                return(new ActionResponse()
                {
                    Success = false, ShouldRetry = false, Message = reply.Reply
                });
            }


            await client.Quit();

            return(new ActionResponse()
            {
                Success = true
            });
        }