gpt4 book ai didi

c# - WCF 服务无法通过 MailDefinition 发送邮件

转载 作者:太空狗 更新时间:2023-10-29 21:46:43 26 4
gpt4 key购买 nike

    // stuff......

return SendCreationMail(Membership.GetUser((Guid)request.UserEntityId), request, new Control());
}

private const string TemplateRoot = "~/app_shared/templates/mail/";
private const string ServerRoot = TemplateRoot + "server/";

public static bool SendCreationMail(MembershipUser user, IServerAccountRequest request, Control owner)
{
var definition = new MailDefinition { BodyFileName = string.Concat(ServerRoot, "creation.htm"), IsBodyHtml = true };
var subject = "New {0} account created!".FormatWith(request.ServerApplicationContract.Id);

var data = ExtendedData(DefaultData, subject, user);

data.Add("<%ServerApplication%>", request.ServerApplicationContract.Id);
data.Add("<%ServerApplicationName%>", request.ServerApplicationContract.ApplicationName);
data.Add("<%AccountUsername%>", request.AccountUsername);

data.Add("<%ServerInfo%>", "/server/{0}/info".FormatWith(request.ServerApplicationContract.Id.ToLower()));

return definition.CreateMailMessage(user.Email, data, owner).Send(subject, ApplicationConfiguration.MailSenderDisplayName);
}

我得到:

Value cannot be null. Parameter name: basepath

at System.Web.Util.UrlPath.Combine(String appPath, String basepath, String relative)
at System.Web.UI.WebControls.MailDefinition.CreateMailMessage(String recipients, IDictionary replacements, Control owner)
at Damnation.Website.Main.Common.MailTemplating.Server.SendCreationMail(MembershipUser user, IServerAccountRequest request, Control owner)
at Damnation.Website.Main.Common.MailTemplating.Server.SendCreationMail(IServerAccountRequest request)
at Damnation.Website.Main.Business.Model.ServerAccountRequest.UpdateRequestsAfterServerProcessing(IEnumerable`1 results)

问题是我没有要传递给它的实际控件,我想知道如何设置一个控件来避免这种无意义的异常。我使用的是相对路径...所以这没有意义。

具有该服务的应用程序在 ASP.NET WebForms .NET 4 下。消费者应用程序是一个也在 .NET 4 下的控制台应用程序

最佳答案

我遇到了同样的问题,我了解到这是因为它在尝试执行您的 definition.CreateMailMessage 时找不到控件的路径。您想要创建一个空白的 Web 用户控件。也许这不是最优雅的解决方案,但它确实有效。

这是我做的:

1) 在您的项目中添加一个 Web 用户控件文件,例如 Test.ascx。

2) 在您的 .svc 文件中添加以下代码:

Page page = new Page();

Test test = (Test)page.LoadControl("Test.ascx");

3) 将您的 definition.CreateMailMessage 行更新为:

return definition.CreateMailMessage(user.Email, data, test).Send(subject, ApplicationConfiguration.MailSenderDisplayName);

您将不会再遇到 basepath null 异常。

关于c# - WCF 服务无法通过 MailDefinition 发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7185105/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com