我发送的电子邮件包含一些附件和一些基本信息。所以每件事都在发送 完美。但是,当我检查我的收件箱邮件还没有, 所以我试着关闭我的申请表。那时邮件来了。
很多时间太累了,我发现当我发送邮件并关闭我的整个表单时,收件人邮箱收到电子邮件。任何想法!!!
代码段:
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);
}
}
答案 0 :(得分:2)
因此,有很多方法可以发送电子邮件。而使用声明非常受欢迎。
以下是另一种发送邮件的方法的链接: Send e-mail via SMTP using C#
我想问你一个问题,你想做什么?
这是一个大规模的电子邮件发件人吗? 您可能希望使用邮件发送服务,例如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 Sending email in .NET through Gmail
答案 1 :(得分:1)
尝试重新激活您的代码:
smtp.Send(msg);
_f3.ShowDialog();
将发送电子邮件的行放在显示模式对话框的行上方。在此表单关闭之前,您的代码将不会继续。
答案 2 :(得分:1)
正如@TyCobb所指出的,.NET 4+中的SmtpClient
实现了IDisposable
。你没有打电话给smtp.Dispose()
就打破了合同。 using
块通常是实现这一目标的最便捷方式。
答案 3 :(得分:1)
尝试使用"使用块"也许是,Show()insted 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);
}
}
}