我正在尝试使用C#代码发送和保存发送电子邮件。但我不能完成这件事。我可以保存邮件,也可以发送邮件。但我不能完成这两件事。
这就是我所拥有的:
public ActionResult Index()
{
MailMessage message = new MailMessage();
message.From = new MailAddress("test@mail.com");
message.To.Add(new MailAddress("mymail@gmail.com"));
message.Subject = "Test Subject";
message.Body = "This is a test message";
message.IsBodyHtml = true;
// Setup SMTP settings
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
smtp.EnableSsl = true;
NetworkCredential basicCredential = new NetworkCredential("mymail@gmail.com", "******");
smtp.UseDefaultCredentials = false;
smtp.Credentials = basicCredential;
smtp.Send(message);
// save
smtp.EnableSsl = false;
smtp.PickupDirectoryLocation = @"C:\Temp";
smtp.Send(message);
return View();
}
首先我尝试发送电子邮件。这样可行。然后我试图将电子邮件保存到我的硬盘。但它永远不会得救。当我不发送电子邮件并尝试立即将其保存到我的硬盘时,它确实有效。但我需要做到这两点。
任何人都知道如何完成这项工作?我只需要记录发送消息。
答案 0 :(得分:3)
拾取目录中的邮件消息由本地SMTP服务器(如果存在)自动发送,例如IIS。 (SmtpClient.PickupDirectoryLocation)
如果要保存到文件系统,则需要将DeliveryMethod
设置为SmtpDeliveryMethod.SpecifiedPickupDirectory
:
client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
client.PickupDirectoryLocation = @"C:\Temp";
client.Send(message);
请参阅How to save MailMessage object to disk as *.eml or *.msg file
答案 1 :(得分:1)
您必须将属性DeliveryMethod
更改为SmtpDeliveryMethod.SpecifiedPickupDirectorynot
才能发送电子邮件。
仅更改PickupDirectoryLocation
将无效,因为DeliveryMethod
设置为Network
时(默认值为默认值)时未使用该属性。
请参阅MSDN。