2

我正在使用MVCMailer作为我的电子邮件工具来处理这个 Web 应用程序将发送的所有电子邮件。发送电子邮件很简单,但是当我在 localhost 上进行测试时,我无法让它工作。

在网站上,我按照您需要的方式进行了设置。我的网络配置中有这个:

<system.net>
    <mailSettings>
      <!-- Method#1: Configure smtp server credentials -->
      <smtp from="david.stanley.13@gmail.com">
        <network enableSsl="true" host="smtp.gmail.com" port="587" userName="david.stanley.13@gmail.com" password="pass" />
      </smtp>
    </mailSettings>
</system.net>

我将它设置在我的控制器之上:

private IUserMailer _userMailer = new UserMailer();
public IUserMailer UserMailer
{
    get { return _userMailer; }
    set { _userMailer = value; }
}

这就是我调用“发送”方法来测试欢迎消息的地方(在 ActionResult 方法中):

_userMailer.Welcome(model.EmailAddress, model.FirstName + " " + model.LastName).Send();

我相信我没有错过链接的教程中的任何内容,但是在单步执行代码时出现此错误:

The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. 

我猜几个问题:

  1. 我可以做一个设置来让它运行吗?
  2. 如果我的 gmail 上有 2-Factor auth,那会干扰吗?
  3. 我是否遗漏了一些如此明显的东西,我想删除这个问题?

谢谢!

编辑

  1. 密码是个玩笑,我没那么笨,给我一些信任.. :)

Send() 实现这样做(它内置在 MVC 邮件程序中):

public virtual MvcMailMessage Welcome(string email, string fullName)
{
//ViewBag.Data = someObject;
return Populate(x =>
{
    x.Subject = "Welcome to eTrail Cub Tracking " + fullName;
    x.ViewName = "Welcome";
    x.To.Add(email);
});
}
4

2 回答 2

2

不确定这是否是您的问题,但您似乎忘记在配置中设置默认交付方式。

你有

<system.net>
    <mailSettings>
      <!-- Method#1: Configure smtp server credentials -->
      <smtp from="david.stanley.13@gmail.com">
        <network enableSsl="true" host="smtp.gmail.com" port="587" userName="david.stanley.13@gmail.com" password="pass" />
      </smtp>
    </mailSettings>
</system.net>

尝试 :

<system.net>
    <mailSettings>
      <!-- Method#1: Configure smtp server credentials -->
      <smtp from="david.stanley.13@gmail.com" deliveryMethod="Network">
        <network enableSsl="true" host="smtp.gmail.com" port="587" userName="david.stanley.13@gmail.com" password="pass" />
      </smtp>
    </mailSettings>
</system.net>

我也会尝试直接在没有 MvcMailer 的代码示例中使用SmtpClient,看看问题是否只是配置问题。

于 2013-11-05T14:07:11.913 回答
0

也许你错过了一些不愉快的事情:smtp.Send(x);

尝试:

public virtual MvcMailMessage Welcome(string email, string fullName)
{

    //ViewBag.Data = someObject;

    return Populate(x =>
    {
        x.Subject = "Welcome to eTrail Cub Tracking " + fullName;
        x.ViewName = "Welcome";
        x.To.Add(email);
        stmp.send(x);
    });
}
于 2014-09-05T10:59:06.533 回答