到目前为止,我使用的是SmtpClient ASP.NET MVC 5.为了测试本地系统上的电子邮件发送功能,我使用的是client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
现在,我想在ASP.NET Core中做同样的事情,直到现在还没有实现SmtpClient类。所有搜索结果都以MailKit结束。我使用了他们的发送邮件代码,这对gmail工作正常。
我不希望每次都发送测试电子邮件,在我的项目中可能会有很多我需要发送电子邮件的方案。如何使用MailKit的本地电子邮件发送功能。任何链接或小源代码都会有所帮助。感谢
答案 0 :(得分:14)
我不确定SmtpDeliveryMethod.SpecifiedPickupDirectory
如何工作以及它的确切功能的详细信息,但我怀疑它可能只是将邮件保存在本地Exchange服务器定期检查邮件的目录中发出去。
假设情况如此,您可以这样做:
void SaveToPickupDirectory (MimeMessage message, string pickupDirectory)
{
do {
// Note: this will require that you know where the specified pickup directory is.
var path = Path.Combine (pickupDirectory, Guid.NewGuid ().ToString () + ".eml");
if (File.Exists (path))
continue;
try {
using (var stream = new FileStream (path, FileMode.CreateNew)) {
message.WriteTo (stream);
return;
}
} catch (IOException) {
// The file may have been created between our File.Exists() check and
// our attempt to create the stream.
}
} while (true);
}
上面的代码段使用Guid.NewGuid ()
作为生成临时文件名的方法,但您可以使用您想要的任何方法(例如,您也可以选择使用message.MessageId + ".eml"
)。
基于Microsoft的referencesource,当使用SpecifiedPickupDirectory
时,他们实际上也会使用Guid.NewGuid ().ToString () + ".eml"
,因此这可能是最佳选择。