/// <summary> /// 发送邮件(仅用于SMTP25或Explicit SSL(587端口)发送,Implicit SSL使用:SendSSLEmailL) /// 该方法仅用于测试,使用请用异步调用 /// </summary> /// <param name="account">邮箱名</param> /// <param name="passwd">邮箱密码</param> /// <param name="server">SMTP服务器域名</param> /// <param name="port">SMTP为25,SSL:465,如果使用IMAP则需另设</param> /// <param name="mailInfo">邮件内容</param> /// <param name="attach">附件物理地址</param> /// <returns></returns> public static MailState SendEmail(string account, string passwd, string server, MailInfo mailInfo, string[] attach) { SmtpClient client = new SmtpClient(server, 25); NetworkCredential credential = new NetworkCredential(account, passwd); client.UseDefaultCredentials = true; client.EnableSsl = false; client.Credentials = credential.GetCredential(server, 25, "Basic"); client.DeliveryMethod = SmtpDeliveryMethod.Network; //-------------------------------------------------- MailMessage mailMessage = GetMailMessage(mailInfo, account); mailMessage.BodyEncoding = Encoding.UTF8; mailMessage.IsBodyHtml = true; foreach (string file in attach)//物理路径 { if (string.IsNullOrEmpty(file)) { continue; } Attachment item = new Attachment(file); mailMessage.Attachments.Add(item); } client.Send(mailMessage); MailState state = MailState.Ok; return(state); }
/// <summary> /// 刷新信件item信息 /// </summary> /// <param name="id"></param> public void RefreshMailType(List <int> ids, MailState type) { for (int i = 0; i < ids.Count; i++) { int id = ids[i]; if (_mailDataDic.ContainsKey(id)) { MailData mailData = _mailDataDic[id]; mailData._type = type; if (type == MailState.DeleteState) { _mailDatas.Remove(mailData); _mailBoxTimeController.CloseCountDown(mailData._mailID); } } } List <MailData> mailDatas = new List <MailData>(); for (int i = 0; i < _mailDatas.Count; i++) { mailDatas.Add(_mailDataDic[_mailDatas[i]._mailID]); } GetMailData(mailDatas); }
/// <summary> /// 刷新信件item信息 /// </summary> /// <param name="id"></param> public void RefreshMailType(List <MailData> mailDatas, MailState type) { if (mailDatas == null || mailDatas.Count <= 0) { return; } List <MailData> mailDatasNew = new List <MailData>(); for (int i = 0; i < mailDatas.Count; i++) { MailData data = mailDatas[i]; if (_mailDataDic.ContainsKey(data._mailID)) { MailData mailData = _mailDataDic[data._mailID]; mailData._type = type; if (type == MailState.DeleteState) { _mailDatas.Remove(mailData); _mailBoxTimeController.CloseCountDown(mailData._mailID); } } } for (int i = 0; i < _mailDatas.Count; i++) { mailDatasNew.Add(_mailDatas[i]); } GetMailData(mailDatasNew); }
public void RequestSending(MessageWrapper msg, MailState mailState) { //Methode wird vom Frontend ausgeführt string key = mailState.Id; lock (tempMailCountLock) { TempMailCount++; } MainWindow mainWindow = (MainWindow)Application.Current.MainWindow; ServerControl myServerControl = (ServerControl)mainWindow.GetServerControl(key); //TextBox statusBox = (TextBox) myServerControl.statusBar.Items[0]; if (mailState.EndlessSending) { try { myServerControl.resToMailPanel1.progressBar.Maximum++; } catch (Exception ex) { } } try { myServerControl.resToMailPanel1.progressBar.Value++; myServerControl.resToMailPanel1.txtActMails.Text = myServerControl.resToMailPanel1.progressBar.Value.ToString(); } catch (Exception ex) { myServerControl.resToMailPanel1.txtActMails.Text = "> " + myServerControl.resToMailPanel1.txtActMails.Text; } }
public void UpdateMailSending(MessageWrapper msg, MailState mailState) { string key = mailState.Id; lock (tempMailCountLock) { TempMailCount++; } MainWindow mainWindow = (MainWindow)Application.Current.MainWindow; ServerControl myServerControl = (ServerControl)mainWindow.GetServerControl(key); //TextBox statusBox = (TextBox) myServerControl.statusBar.Items[0]; if (mailState.EndlessSending) { try { myServerControl.resToMailPanel1.progressBar.Maximum++; } catch (Exception ex) { } } try { myServerControl.resToMailPanel1.progressBar.Value++; myServerControl.resToMailPanel1.txtActMails.Text = myServerControl.resToMailPanel1.progressBar.Value.ToString(); } catch (Exception ex) { myServerControl.resToMailPanel1.txtActMails.Text = "> " + myServerControl.resToMailPanel1.txtActMails.Text; } /* * if (!msg.Corrupt) * { * if (mailState.CountWholeMailsSend < 300000) * { * myServerControl.mailingOutput.Items.Add(msg.MessagePath); * } * } */ //if (mailState.CountWholeMailsSend < 300000) if (msg.Corrupt) { lock (tempErrorMailCountLock) { TempErrorMailCount++; } //string endState = "Sent: " + mailState.MailsSent + " Error: " + mailState.ErrorsWhileSendingMails; //myServerControl.mailingOutput.Items.Add(new LogMessage(endState)); string logMessage = TempErrorMailCount + ".Error: " + msg.MessagePath + " " + msg.Ex[msg.Ex.Count - 1].Message.TrimEnd('\r', '\n', '\n');//.Replace(Environment.NewLine, ""); LogMessage myLogMessage = new LogMessage(logMessage); myServerControl.mailingOutput.Items.Add(myLogMessage); myServerControl.mailingOutput.SelectedItem = myLogMessage; myServerControl.mailingOutput.ScrollIntoView(myLogMessage); //Fehler ist fertig geloggt, nun zurücksetzen, vielleicht klappt es ja beim nächsten mal msg.Corrupt = false; } }
private void SetState(MailState state) { switch (state) { case MailState.NewMail: _trayIcon.SetIconAsResource(NewMailIcon); if (HaveMessagesChanged()) { ShowToast(); } break; case MailState.NoNewMail: if (HaveMessagesChanged()) { _trayIcon.SetIconAsResource(NoNewMailIcon); _toast.Hide(); } break; case MailState.Unknown: if (HaveMessagesChanged()) { _trayIcon.SetIconAsResource(ErrorIcon); _toast.Hide(); } break; } }
public void ChangeState(MailState mailState) { if (MailState != mailState) { MailState = mailState; } }
/// <summary> /// 发送邮件并返回状态信息 /// </summary> /// <returns>状态信息</returns> public MailState Send() { MailConfig mailConfig = ConfigHelper.Get <MailConfig>(); MailState mailcode = ValidMail(mailConfig); if (mailcode == MailState.None) { MimeMessage mailMessage = GetMailMessage(mailConfig); try { using (var client = new SmtpClient()) { //连接到Smtp服务器 client.Connect(mailConfig.MailServer, mailConfig.Port, mailConfig.EnabledSsl); //登陆 client.Authenticate(mailConfig.MailServerUserName, mailConfig.MailServerPassWord); //发送 client.Send(mailMessage); //断开 client.Disconnect(true); } mailcode = MailState.Ok; } catch (SmtpCommandException exception) { switch (exception.StatusCode) { case SmtpStatusCode.MailboxNameNotAllowed: mailcode = MailState.UserNameOrPasswordError; break; default: mailcode = MailState.SendFailure; break; } if (exception.InnerException is IOException) { mailcode = MailState.AttachmentSizeLimit; } else if (exception.InnerException is WebException) { if (exception.InnerException.InnerException == null) { mailcode = MailState.SmtpServerNotFind; } else if (exception.InnerException.InnerException is SocketException) { mailcode = MailState.PortError; } } else { mailcode = MailState.NonsupportSsl; } } } this.Msg = GetMailStateInfo(mailcode); return(mailcode); }
public void OnBeforeMailSent(MessageWrapper mail, MailState mailState) { IServer.BeforeMailsentHandler myEvent = BeforeMailsentEvent; if (myEvent != null) { myEvent(mail, mailState); } }
public void OnRequestSentFailed(MessageWrapper mail, MailState mailState) { IServer.RequestSendFailedHandler myEvent = RequestSendFailedEvent; if (myEvent != null) { myEvent(mail, mailState); } }
private void SetTrayTooltip(MailState state) { _trayIcon.TooltipMessage = state == MailState.Unknown ? Strings.Error : _client.NewMessages.Count == 0 ? Strings.NoNewMail : _client.NewMessages.Count == 1 ? Strings.SingleNewMail : string.Format(Strings.MultipleNewMail, _client.NewMessages.Count); _trayIcon.TooltipMessage += Environment.NewLine + Strings.TooltipEnd; }
public void setDelivered() { status = MailState.Delivered; if (MAIL_DEBUG) { Debug.Log("Mail: mail with ID " + mailID + " was delivered"); } }
public void setPicked() { status = MailState.Picked; if (MAIL_DEBUG) { Debug.Log("Mail: mail with ID " + mailID + " was picked up"); } }
void setWaiting() { status = MailState.Waiting; if (MAIL_DEBUG) { Debug.Log("Mail: mail with ID " + mailID + " is waiting to be picked up"); } }
//设置所有的战报为已读状态 void ChangFightStateRead() { MailState state = MailReveicer.Instance.mailState; if (state == MailState.newFight || state == MailState.AllNew) { //Debug.Log("SendFightAllReadRequest"); SendFightAllReadRequest(); } }
public MailItem(string from, string to, string subject, string body, IAttachment attachment, MailState mailState) { ID = Guid.NewGuid(); From = from; To = to; Subject = subject; Body = body; MailState = mailState; Attachment = attachment; }
public void initialize(string mailIDVal, string fromHouseIDVal, string toHouseIDVal, int daysToReadVal, List <string> textVal) { mailID = mailIDVal; fromHouseID = fromHouseIDVal; toHouseID = toHouseIDVal; daysToRead = daysToReadVal; text = textVal; status = MailState.None; }
public void BeforeMailSending(MessageWrapper msg, MailState mailState) { string key = mailState.Id; MainWindow mainWindow = (MainWindow)Application.Current.MainWindow; ServerControl myServerControl = (ServerControl)mainWindow.GetServerControl(key); TextBox statusBox = (TextBox)myServerControl.statusBar.Items[0]; statusBox.Text = msg.MessagePath; }
public void ServerImpl_MailsendEvent(MessageWrapper msg, MailState mailState) { /* * lock (mailsPlusSemaphore) * { * TempMailCount++; * * * } */ Dispatcher.BeginInvoke(new UpdateMailSendingCallback(UpdateMailSending), msg, mailState); }
public void ServerImpl_RequestSendFailedEvent(MessageWrapper msg, MailState mailState) { /* * lock (mailsPlusSemaphore) * { * TempMailCount++; * * * } */ Dispatcher.BeginInvoke(new RequestSendFailedCallback(RequestSendFailed), msg, mailState); }
public void UpdateSendMailsEnd(MailState mailState) { string key = mailState.Id; MainWindow mainWindow = (MainWindow)Application.Current.MainWindow; ServerControl myServerControl = (ServerControl)mainWindow.GetServerControl(key); lock (threadsEndedSemaphore) { m_ThreadsEnded++; if (m_ThreadsEnded >= m_connections) { //Alle Threads beendet ServerStatus serverStatus = Singleton <ServerSendManager> .Instance.GetCorrectServer(mailState.Id); serverStatus.EndTime = DateTime.Now; TimeSpan sendDuration = serverStatus.EndTime.Subtract(serverStatus.StartTime); string endState = "Sent: " + mailState.MailsSent + " Error: " + mailState.ErrorsWhileSendingMails + " Started: " + serverStatus.StartTime.ToString(@"HH\:mm\:ss") + " Duration: " + sendDuration.ToString(@"dd\.hh\:mm\:ss\.fffffff"); LogMessage myLogMessge = new LogMessage(endState); myServerControl.mailingOutput.Items.Add(myLogMessge); myServerControl.mailingOutput.SelectedItem = myLogMessge; myServerControl.mailingOutput.ScrollIntoView(myLogMessge); if (mailState.Ex.Count > 0) { foreach (Exception ex in mailState.Ex) { LogMessage myLogMessgeError = new LogMessage(mailState.Ex[0].Message); myServerControl.mailingOutput.Items.Add(myLogMessgeError); myServerControl.mailingOutput.SelectedItem = myLogMessgeError; myServerControl.mailingOutput.ScrollIntoView(myLogMessgeError); } } myServerControl.startMailPanel1.startButton.Content = "Start"; myServerControl.resToMailPanel1.IsEnabled = true; myServerControl.mailsPanel.IsEnabled = true; myServerControl.run = false; myServerControl.startMailPanel1.startButton.IsEnabled = true; if (!Singleton <ServerSendManager> .Instance.SetRunEnded(mailState.Id)) { Log.logger.Error("Run ended couldn't been set in ServerStatus"); } m_ThreadsEnded = 0; } } }
public static string GetMailStateInfo(MailState mailcode) { switch (mailcode) { case MailState.NoMailToAddress: return("缺少收件人地址"); case MailState.NoSubject: return("缺少邮件标题"); case MailState.FileNotFind: return("附件文件没找到"); case MailState.MailConfigIsNullOrEmpty: return("邮件参数配置不全"); case MailState.SendFailure: return("邮件发送失败"); case MailState.ConfigFileIsWriteOnly: return("无法读取邮件参数配置文件"); case MailState.SaveFailure: return("文件保存失败"); case MailState.SmtpServerNotFind: return("邮件服务器不存在"); case MailState.UserNameOrPasswordError: return("邮件服务器用户名和密码验证没通过"); case MailState.AttachmentSizeLimit: return("附件大小超出限制"); case MailState.MustIssueStartTlsFirst: return("邮件服务器仅接受TLS连接,可以设置支持SSL加密解决"); case MailState.NonsupportSsl: return("邮件服务器不支持SSL加密"); case MailState.PortError: return("邮件服务器端口错误"); case MailState.Ok: return("邮件发送成功"); } return("没有返回信息"); }
/// <summary> /// 得到邮件状态对应的文本信息 /// </summary> /// <param name="mailcode">自定义邮件状态</param> /// <returns>邮件状态信息</returns> public static string GetMailStateInfo(MailState mailcode) { switch (mailcode) { case MailState.NoMailToAddress: return("没有可发送的信箱地址"); case MailState.NoSubject: return("没有邮件题标"); case MailState.FileNotFind: return("找不到要上传的文件"); case MailState.MailConfigIsNullOrEmpty: return("邮箱配置错误"); case MailState.SendFailure: return("发送不成功"); case MailState.ConfigFileIsWriteOnly: return("配置文件只读"); case MailState.SaveFailure: return("保存不成功"); case MailState.SmtpServerNotFind: return("找不到指定的SMTP服务器"); case MailState.UserNameOrPasswordError: return("用户名或密码错误"); case MailState.AttachmentSizeLimit: return("附件容量受到限制"); case MailState.MustIssueStartTlsFirst: return("SMTP 服务器要求安全连接(SSL)或客户端未通过身份验证。"); case MailState.NonsupportSsl: return("服务器不支持安全连接"); case MailState.PortError: return("不能建立连接,或者SMTP端口设置有错误"); case MailState.Ok: return("邮件发送成功"); } return("未知的错误"); }
public static string GetMailStateInfo(MailState mailcode) { switch (mailcode) { case MailState.NoMailToAddress: return "缺少收件人地址"; case MailState.NoSubject: return "缺少邮件标题"; case MailState.FileNotFind: return "附件文件没找到"; case MailState.MailConfigIsNullOrEmpty: return "邮件参数配置不全"; case MailState.SendFailure: return "邮件发送失败"; case MailState.ConfigFileIsWriteOnly: return "无法读取邮件参数配置文件"; case MailState.SaveFailure: return "文件保存失败"; case MailState.SmtpServerNotFind: return "邮件服务器不存在"; case MailState.UserNameOrPasswordError: return "邮件服务器用户名和密码验证没通过"; case MailState.AttachmentSizeLimit: return "附件大小超出限制"; case MailState.MustIssueStartTlsFirst: return "邮件服务器仅接受TLS连接,可以设置支持SSL加密解决"; case MailState.NonsupportSsl: return "邮件服务器不支持SSL加密"; case MailState.PortError: return "邮件服务器端口错误"; case MailState.Ok: return "邮件发送成功"; } return "没有返回信息"; }
public void UpdateMaxMailsSending(MailState mailState) { string key = mailState.Id; //MainWindow mainWindow = (MainWindow)Application.Current.MainWindow; //ServerControl myServerControl = (ServerControl)mainWindow.GetServerControl(key); // myServerControl.resToMailPanel1.txtActMails.Text = "0"; try { //myServerControl.resToMailPanel1.progressBar.Maximum = mailState.WholeMailsToSend; } catch (Exception ex) { } //myServerControl.resToMailPanel1.lblWholeMails.Text = mailState.WholeMailsToSend.ToString(); //SetBindings(key); }
private static MailState ValidInfo(MailInfo mailInfo, MailConfig mailSettings) { MailState none = MailState.None; if (string.IsNullOrEmpty(mailSettings.MailFrom) || string.IsNullOrEmpty(mailSettings.MailServer)) { return(MailState.MailConfigIsNullOrEmpty); } if (mailInfo.ToAddress == null) { return(MailState.NoMailToAddress); } if (string.IsNullOrEmpty(mailInfo.Subject)) { return(MailState.NoSubject); } return(none); }
public void SetNewSgin(MailState state) { newFight.enabled = false; newMessage.enabled = false; if (state == MailState.newFight) { newFight.enabled = true; } else if (state == MailState.newMsg) { newMessage.enabled = true; } else if (state == MailState.AllNew) { newFight.enabled = true; newMessage.enabled = true; } }
public void RequestSendFailed(MessageWrapper msg, MailState mailState) { //Methode wird vom Frontend ausgeführt string key = mailState.Id; lock (tempMailCountLock) { TempMailCount++; } MainWindow mainWindow = (MainWindow)Application.Current.MainWindow; ServerControl myServerControl = (ServerControl)mainWindow.GetServerControl(key); //string logMessage = msg.MessagePath; LogMessage myLogMessage = new LogMessage(msg.MessagePath); myServerControl.mailingOutput.Items.Add(myLogMessage); myServerControl.mailingOutput.SelectedItem = myLogMessage; myServerControl.mailingOutput.ScrollIntoView(myLogMessage); }
private void SendEMail(string email) { string str; IList <MailAddress> list = new List <MailAddress>(); MailState none = MailState.None; MailInfo mailInfo = new MailInfo(); mailInfo.MailBody = base.MessageBody; mailInfo.Subject = base.MessageTitle; mailInfo.IsBodyHtml = true; if (this.m_SendType == SendType.SendToContacter) { str = "收货人"; } else { str = "会员"; } if (!string.IsNullOrEmpty(email) && DataValidator.IsEmail(email)) { list.Add(new MailAddress(email)); mailInfo.MailToAddressList = list; none = SendMail.Send(mailInfo); if (none == MailState.Ok) { base.SuccessMsg.Append("<br>已经向" + str + "发送了一封Email,通知他"); base.SuccessMsg.Append(base.OperationMsg); base.SuccessMsg.Append("!"); } else { string mailStateInfo = SendMail.GetMailStateInfo(none); base.ErrorMsg.Append("<br>"); base.ErrorMsg.Append(mailStateInfo); base.ErrorMsg.Append(",向" + str + "发送邮件失败!"); } } else { base.ErrorMsg.Append("<br>邮件地址为空或无效邮件地址,向" + str + "发送邮件失败!"); } }
/// <summary> /// 初始化 /// </summary> /// <param name="data"></param> public void Initial(CSMailStruct data) { if (data.ConfigId != 0) { MailDefine mailDefine = StaticData.configExcel.GetMailByMailId(data.ConfigId); if (mailDefine != null) { _mailName = StaticData.GetMultilingual(mailDefine.Title); _mailContent = StaticData.GetMultilingual(mailDefine.Message); _subhead = StaticData.GetMultilingual(mailDefine.Subtitle); } else { _mailName = "获取不到配置数据,邮件id:" + data.MailId; _mailContent = "获取不到配置数据,邮件配置id:" + data.ConfigId; _subhead = "获取不到副标题"; } } else { _mailName = StaticData.GetMultilingual(data.Title); _mailContent = StaticData.GetMultilingual(data.Message); _subhead = StaticData.GetMultilingual(data.SubheadID);; } _mailID = data.MailId; _timestamp = data.DisabledTime; _addressor = data.Addresser; _type = (MailState)data.State; if (data.HaveAccessory == false) { _isHaveAccessory = false; } else { _isHaveAccessory = data.HaveAccessory; } }
/// <summary> /// 验证邮件配置信息并返回邮件状态信息 /// </summary> /// <param name="mailSettings">邮件配置文件对象</param> /// <returns>邮件状态信息</returns> private MailState ValidMail(MailConfig mailSettings) { MailState none = MailState.None; if (string.IsNullOrEmpty(mailSettings.MailFrom) || string.IsNullOrEmpty(mailSettings.MailServer)) { return(MailState.MailConfigIsNullOrEmpty); } if (this.MailToAddressList == null) { return(MailState.NoMailToAddress); } if (string.IsNullOrEmpty(this.Subject)) { return(MailState.NoSubject); } if (!string.IsNullOrEmpty(this.AttachmentFilePath) && !System.IO.File.Exists(this.AttachmentFilePath)) { none = MailState.FileNotFind; } return(none); }
//--------------------------------------------------------------------- // 响应邮件已读且领取所有附件 public override void onReadMailAndRecvAttachments( IMProtocolResult result, string mail_guid, MailState new_mail_state, List<string> list_attachment) { }
//--------------------------------------------------------------------- // 响应邮件已读 public override void onReadMail(IMProtocolResult result, string mail_guid, MailState new_mail_state) { }
//--------------------------------------------------------------------- // 响应邮件已读 public abstract void onReadMail(IMProtocolResult result, string mail_guid, MailState new_mail_state);