【问题标题】:Email sending in aspnetboilerplate not working在 aspnetboilerplate 中发送电子邮件不起作用
【发布时间】:2017-11-11 09:34:22
【问题描述】:

这是设置:

AddSettingIfNotExists(EmailSettingNames.DefaultFromAddress, "abc@xyz.tech");
AddSettingIfNotExists(EmailSettingNames.DefaultFromDisplayName, "abc.tech Emailservice");
AddSettingIfNotExists(EmailSettingNames.Smtp.UserName, "abc@xyz.tech");
AddSettingIfNotExists(EmailSettingNames.Smtp.Domain, "abc.tech");
AddSettingIfNotExists(EmailSettingNames.Smtp.EnableSsl,"false");
AddSettingIfNotExists(EmailSettingNames.Smtp.Host, "webmail.abc.tech");
AddSettingIfNotExists(EmailSettingNames.Smtp.Port, "25");
AddSettingIfNotExists(EmailSettingNames.Smtp.Password, "gdfdgd");
AddSettingIfNotExists(EmailSettingNames.Smtp.UseDefaultCredentials, "false");

这是电子邮件发送代码:

// See "Update"

我遇到了这个异常:

错误的命令序列。服务器响应是:此邮件服务器 尝试发送到非本地电子邮件时需要身份验证 地址。请检查您的邮件客户端设置或联系您的 管理员验证是否为此定义了域或地址 服务器

更新

public class UserAppService // ...
{
    private readonly UserManager _userManager;
    private readonly RoleManager _roleManager;
    IRepository<User, long> _rep;
    private readonly IRepository<Role> _roleRepository;
    private readonly IPasswordHasher<User> _passwordHasher;
    public readonly IEmailSender _emailSender;

    public UserAppService(
        IRepository<User, long> repository,
        UserManager userManager,
        RoleManager roleManager,
        IRepository<Role> roleRepository,
        IPasswordHasher<User> passwordHasher, IEmailSender em)
        : base(repository)
    {
        _rep = repository;
        _userManager = userManager;
        _roleManager = roleManager;
        _roleRepository = roleRepository;
        _passwordHasher = passwordHasher;
        _emailSender = em;
    }

    [AbpAllowAnonymous]
    public override async Task<UserDto> Create(CreateUserDto input)
    {
        // CheckCreatePermission();

        var user = ObjectMapper.Map<User>(input);

        user.TenantId = AbpSession.TenantId;
        user.Password = _passwordHasher.HashPassword(user, input.Password);
        user.IsEmailConfirmed = false;

        CheckErrors(await _userManager.CreateAsync(user));

        if (input.RoleNames != null)
        {
            CheckErrors(await _userManager.SetRoles(user, input.RoleNames));
        }

        CurrentUnitOfWork.SaveChanges();

        try
        {
            await _emailSender.SendAsync("test@gmail.com", "sdfs", "sdfsd", false);
        }
        catch (Exception ex)
        {
        }

        return MapToEntityDto(user);
    }
}

【问题讨论】:

  • @aaron 是的,它正在使用 MailMessage

标签: c# asp.net email smtpclient aspnetboilerplate


【解决方案1】:

此邮件服务器在尝试发送到非本地电子邮件地址时需要身份验证。

您的 SMTP 服务器 (related) 似乎有问题。

尝试向您自己或同一域中的其他用户发送电子邮件。

我无法将邮件发送到其他域与它正在工作的域相同,这将是什么问题。

联系您的 SMTP 服务器的系统管理员。

使用 smtp 普通 .net 代码可以正常工作

您也可以使用IEmailSender 发送MailMessage

【讨论】:

    【解决方案2】:

    这与 aspnetboilerplate 无关。正如错误所说“此邮件服务器在尝试发送到非本地电子邮件地址时需要身份验证。”

    可能的原因:

    • 电子邮件客户端未配置用于 SMTP 身份验证和服务器 是
    • 防火墙或电子邮件代理软件阻止了 SMTP 身份验证
    • 电子邮件客户端配置的凭据不正确或与服务器设置不匹配。

    您可以下载下面的应用程序来测试您的 smtp 设置。 http://www.alexnolan.net/software/SMTPProber.htm

    成功发送电子邮件后,请使用 aspnetboilerplate 中的正确设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-25
      • 2018-09-21
      • 2016-02-11
      • 2012-08-01
      • 2018-10-30
      • 2017-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多