asp.net - Azure 中的 SMTP SpecifiedPickupDirectory?
问题描述
我正在开发一个 Episerver CMS 站点,该站点正在迁移到 Episerver DXC,这是他们使用 Azure 的云解决方案。在网站上使用 web.config 中的 SMTP 配置。在测试和开发环境中,我们不想意外发送生产邮件。在当前的测试和开发环境中,我们使用“SpecifiedPickupDirectory”将邮件保存在磁盘上而不是发送它们。我已经搜索并试图找到如何在 Azure 中进行相同的配置。但我不知道怎么做。
有可能吗,还是我们必须以另一种方式来做?
当前配置:
<system.net>
<mailSettings>
<smtp from="no-reply@domain.com" deliveryMethod="SpecifiedPickupDirectory" >
<specifiedPickupDirectory pickupDirectoryLocation="C:\inetpub\mailroot\Pickup" />
<network host="smtp.domain.com" port="25" defaultCredentials="true" />
</smtp>
</mailSettings>
</system.net>
此致
尼克拉斯
解决方案
不是 Episerver 特定的,但如果您希望它们存储在磁盘上用于 Azure 应用服务,您可以设置pickupDirectoryLocation
为D:\home\site\wwwroot\App_Data\smtp
.
Config 不支持应用程序相对路径,但如果您愿意,可以按照此处演示的方式以编程方式设置路径:How can I save an email instead of send when using SmtpClient?
TL;DR 代码示例:
var client = new SmtpClient();
if (client.DeliveryMethod == SmtpDeliveryMethod.SpecifiedPickupDirectory && client.PickupDirectoryLocation.StartsWith("~"))
{
string root = AppDomain.CurrentDomain.BaseDirectory;
string pickupRoot = client.PickupDirectoryLocation.Replace("~/", root);
pickupRoot = pickupRoot.Replace("/",@"\");
client.PickupDirectoryLocation = pickupRoot;
}
// TODO Send e-mail using client
推荐阅读
- sql - 如何在表格中间打印所需行?
- multithreading - UDP,多线程多个客户端?
- attributes - Aframe(如何?)动画实体或同时和顺序缩放/旋转/位置的实体
- qt - 在 Qml 中设置自定义控件的内容区域
- python - 如何在特定行的列中写入值?
- jquery - 没有第二次附加数据
- rest - 不允许使用 Spring Boot REST 方法
- mysql - SQL 无法在 laravel 控制器中更新
- jquery - 如果主菜单关闭/打开,则更改子菜单的加号/减号
- laravel - plaid api for add auth user error secret or client_id invalid Client ID 不存在或 Secret 与您提供的 Client ID 不匹配