3

我正在尝试使用 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();
}

所以首先我尝试发送电子邮件。这样可行。然后我试图将电子邮件保存到我的硬盘中。但它永远不会得救。当我不发送电子邮件并尝试立即将其保存到我的硬盘时,它确实有效。但我需要两者都做。

任何人都知道我怎么能做到这一点?我只需要记录发送消息。

4

2 回答 2

5

取件目录中的邮件消息由本地 SMTP 服务器(如果存在)(如 IIS)自动发送。( SmtpClient.PickupDirectoryLocation )

如果要保存到文件系统,则需要设置DeliveryMethodSmtpDeliveryMethod.SpecifiedPickupDirectory

client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory; 
client.PickupDirectoryLocation = @"C:\Temp"; 
client.Send(message); 

请参阅如何将 MailMessage 对象作为 *.eml 或 *.msg 文件保存到磁盘

于 2012-08-28T07:57:09.740 回答
1

您必须将属性更改DeliveryMethodSmtpDeliveryMethod.SpecifiedPickupDirectorynot不发送电子邮件。

只是更改PickupDirectoryLocation将不起作用,因为DeliveryMethod设置为Network(这是默认值)时不使用该属性。

请参阅MSDN

于 2012-08-28T08:00:00.673 回答