当我关闭应用程序时,电子邮件发送成功
本文关键字:电子邮件 成功 应用程序 | 更新日期: 2023-09-27 18:25:38
我正在发送一封包含一些附件和一些基本信息的电子邮件。所以每件事都在发送完美地但当我查看收件箱中尚未收到的邮件时,所以我试着关闭我的申请表。所以时间邮件来了。
太累了很多时间,我发现当我发送邮件并关闭整个表单时,收件人邮箱中就会收到电子邮件任何想法!!!
代码片段:
SmtpClient smtp = new SmtpClient(smtpserver, 25);
MailMessage msg = new MailMessage();
msg.From = new MailAddress(email_From);
msg.To.Add(email_Recipient);
msg.IsBodyHtml = true;
msg.Subject = email_Subject;
///Attachment's and Body
try
{
_f3.ShowDialog();
smtp.Send(msg);
MessageBox.Show("Email Successfully Sent!!!", "Mail!!!.");
Environment.Exit(0);// -->> if i keep this mail is going.. else i have to close
// my application to receive mail
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
}
@TyCobb指出,.NET 4+中的SmtpClient
实现了IDisposable
。你不给smtp.Dispose()
打电话是违反合同的。using
块通常是实现这一点的最方便的方式。
因此,有很多发送电子邮件的方法。Using语句是一个非常流行的语句。
以下是另一种发送邮件方法的链接:使用C#通过SMTP发送电子邮件
我想你的一个问题是,你想做什么?
这是一个大型电子邮件发件人吗?您可能想要使用邮件调度服务,例如sendgrid。
如果这是一个针对你自己的测试项目,它将发送低优先级的管理电子邮件或其他什么,你可能可以接受以上内容。
不过,在任何情况下,我都会有一个类设置,您可以在其中传递以下内容:To、From、Subject、HTMLMessageContent、PlainTextMessageContent,最低限度。
然后,此方法将处理从您的应用程序发送的所有电子邮件。以下是一个很好的起点。
public bool SendMail(string from, string to, string subject, string htmlContent, string plainContent)
{
//Email sending code - could be replaced by 3rd party mail sending API, etc.
MailMessage mail = new MailMessage(from, to);
SmtpClient client = new SmtpClient();
client.Port = 25;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Host = "smtp.google.com";
mail.Subject = subject;
mail.Body = htmlContent;
client.Send(mail);
}
然后你可以通过拨打上述电话
//... code
SendMail(email_From, email_Recipient, email_Subject, email_body_HTML, email_body, plaintext);
//... code
很明显,然后你可以做一些事情,比如返回一个表示成功的bool,错误处理/捕获/日志记录,附件等等。
试试看这是否是一个好的起点。
或者,以下链接也应该有一些用处:http://csharp.net-informations.com/communications/csharp-smtp-mail.htm通过Gmail 在.NET中发送电子邮件
尝试重新排列代码:
smtp.Send(msg);
_f3.ShowDialog();
将发送电子邮件的行放在显示模式对话框的行的上方。在关闭此表单之前,您的代码不会继续。
尝试使用"使用块",也许也可以使用ShowDialog()代替ShowDialog
using(SmtpClient smtp = new SmtpClient(smtpserver, 25))
{
MailMessage msg = new MailMessage();
msg.From = new MailAddress(email_From);
msg.To.Add(email_Recipient);
msg.IsBodyHtml = true;
msg.Subject = email_Subject;
///Attachment's and Body
try
{
_f3.ShowDialog(); //until you dont close the dialog, it will not send the msg. Maybe _f3.Show() solve your problem
smtp.Send(msg);
MessageBox.Show("Email Successfully Sent!!!", "Mail!!!.");
//Environment.Exit(0);// -->> if i keep this mail is going.. else i have to close
// my application to receive mail
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}