首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActionMailer失败,返回“值不能为空,参数名: uriString”

ActionMailer失败,返回“值不能为空,参数名: uriString”
EN

Stack Overflow用户
提问于 2012-02-16 04:57:58
回答 2查看 1.6K关注 0票数 0

我正在尝试使用ActionMailer 0.7.0从我的MVC3项目发送电子邮件。

我已经完全按照项目站点上发布的示例进行了操作。

但当我尝试发送电子邮件时,总是出现以下错误:

“值不能为空。参数名: uriString”

它出现在电子邮件正文中的@Url.AbsoluteAction中。

代码语言:javascript
复制
@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!

有人能帮帮我吗?我遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-24 20:51:51

经过几天的努力尝试使用示例中提出的代码来解决这个问题,我放弃了。

我已经下载了源代码,并发现当您的RouteCollection不是标准的时候就会出现问题(我的情况就是这样)。

所以我在周围找到了一个优雅的作品,它对我很有效。

我不是将令牌发送到视图并使用Url.AbsoluteAction方法,而是在控制器中使用带有协议参数的Url.Action,并在视图模型中发送完整的url。如下所示:

代码语言:javascript
复制
new EmailsController().ActivationMail(new ActivationMailViewModel { Email = data.Email, FirstName = data.Name, ActivationLink = Url.Action("VerifyEmail", "Mail", new { code = data.ActivationToken.ToString() }, "http") }).Deliver();

视图变成了:

代码语言:javascript
复制
@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示例中都没有指定。以下是最终配置:

代码语言:javascript
复制
  <system.net>
    <mailSettings>
      <smtp deliveryMethod="SpecifiedPickupDirectory">
        <network host="none" />
        <specifiedPickupDirectory pickupDirectoryLocation="C:\temp\" />
      </smtp>
    </mailSettings>
  </system.net>

我希望它能帮助一些人。

祝大家好运。

票数 1
EN

Stack Overflow用户

发布于 2012-02-17 02:10:08

我刚刚花了几个小时在我的MVC项目中实现了ActionMailer。

我发现斯科特的录像带对我真的很有帮助。

http://www.youtube.com/watch?v=QQRzYo7k9Vs&hd=1

它解释了如何解决SMTP主机问题,以及如何设置用户模型等。

我仍然被用户电子邮件验证卡住了,如果我解决了问题,我会试着让你知道。

然而,你不需要这个来发送“普通”的电子邮件。因此,我的建议是,在你能让电子邮件正常工作之前,暂时不要去管它。

希望这有帮助,当我整理电子邮件验证时,我会给你回复的!

干杯

朱伊

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9301256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档