我正在尝试使用ActionMailer 0.7.0从我的MVC3项目发送电子邮件。
我已经完全按照项目站点上发布的示例进行了操作。
但当我尝试发送电子邮件时,总是出现以下错误:
“值不能为空。参数名: uriString”
它出现在电子邮件正文中的@Url.AbsoluteAction中。
@using ActionMailer.Net
@model User
@{
Layout = null;
}
Welcome to My Cool Site, @Model.FirstName
We need you to verify your email. Click this nifty link to get verified!
// The error happens in the line bellow
@Url.AbsoluteAction("Verify", "Account", new { code = @Model.EmailActivationToken.ToString() })
Thanks!有人能帮帮我吗?我遗漏了什么?
发布于 2012-02-24 20:51:51
经过几天的努力尝试使用示例中提出的代码来解决这个问题,我放弃了。
我已经下载了源代码,并发现当您的RouteCollection不是标准的时候就会出现问题(我的情况就是这样)。
所以我在周围找到了一个优雅的作品,它对我很有效。
我不是将令牌发送到视图并使用Url.AbsoluteAction方法,而是在控制器中使用带有协议参数的Url.Action,并在视图模型中发送完整的url。如下所示:
new EmailsController().ActivationMail(new ActivationMailViewModel { Email = data.Email, FirstName = data.Name, ActivationLink = Url.Action("VerifyEmail", "Mail", new { code = data.ActivationToken.ToString() }, "http") }).Deliver();视图变成了:
@using ActionMailer.Net
@model User
@{ Layout = null; }
Welcome to My Cool Site, @Model.FirstName
We need you to verify your email. Click this nifty link to get verified!
@Model.ActivationLink
Thanks!关于SMTP主机问题,我发现在Web.Config中,即使您为"SpecifiedPickupDirectory“设置了deliver,也需要添加一个空的主机标记。在任何ActionMailer示例中都没有指定。以下是最终配置:
<system.net>
<mailSettings>
<smtp deliveryMethod="SpecifiedPickupDirectory">
<network host="none" />
<specifiedPickupDirectory pickupDirectoryLocation="C:\temp\" />
</smtp>
</mailSettings>
</system.net>我希望它能帮助一些人。
祝大家好运。
发布于 2012-02-17 02:10:08
我刚刚花了几个小时在我的MVC项目中实现了ActionMailer。
我发现斯科特的录像带对我真的很有帮助。
http://www.youtube.com/watch?v=QQRzYo7k9Vs&hd=1
它解释了如何解决SMTP主机问题,以及如何设置用户模型等。
我仍然被用户电子邮件验证卡住了,如果我解决了问题,我会试着让你知道。
然而,你不需要这个来发送“普通”的电子邮件。因此,我的建议是,在你能让电子邮件正常工作之前,暂时不要去管它。
希望这有帮助,当我整理电子邮件验证时,我会给你回复的!
干杯
朱伊
https://stackoverflow.com/questions/9301256
复制相似问题