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();
}

というわけで、まずはメールを送ってみる。それはうまくいきます。次に、メールをHDDに保存しようとしています。しかし、一向に救われません。メールを送信せず、すぐに HDD に保存しようとすると機能します。しかし、私は両方を行う必要があります。

どうすればこれを成し遂げることができるか誰にも分かりますか? 送信メッセージをログに記録するだけです。

4

2 に答える 2

5

ピックアップ ディレクトリ内のメール メッセージは、IIS などのローカル SMTP サーバー (存在する場合) によって自動的に送信されます。( SmtpClient.PickupDirectoryLocation )

ファイル システムに保存する場合は、次のように設定する必要がありDeliveryMethodますSmtpDeliveryMethod.SpecifiedPickupDirectory

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

MailMessage オブジェクトを *.eml または *.msg ファイルとしてディスクに保存する方法を参照してください。

于 2012-08-28T07:57:09.740 に答える
1

メールを送信しないようにプロパティを変更する必要がDeliveryMethodあります。SmtpDeliveryMethod.SpecifiedPickupDirectorynot

を変更するだけでは機能しません。これは、が に設定されている場合(デフォルト値)PickupDirectoryLocationにプロパティが使用されないためです。DeliveryMethodNetwork

MSDNを参照してください。

于 2012-08-28T08:00:00.673 に答える