2017-11-11 132 views
0

发送这是设置:电子邮件中aspnetboilerplate不工作

AddSettingIfNotExists(EmailSettingNames.DefaultFromAddress, "[email protected]"); 
AddSettingIfNotExists(EmailSettingNames.DefaultFromDisplayName, "abc.tech Emailservice"); 
AddSettingIfNotExists(EmailSettingNames.Smtp.UserName, "[email protected]"); 
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("[email protected]", "sdfs", "sdfsd", false); 
     } 
     catch (Exception ex) 
     { 
     } 

     return MapToEntityDto(user); 
    } 
} 
+0

@aaron是的,它正在使用MailMessage – Nighil

回答

1

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

看起来像您的SMTP服务器(related)的问题。

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

我不能发送邮件到其他域相同的域它正在工作会是什么问题。

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

使用SMTP普通的.NET代码,它工作正常

可以使用IEmailSender太发送MailMessage

0

这有什么好做aspnetboilerplate定义。因为错误说:“此邮件服务器需要尝试发送到非本地电子邮件地址时,验证。”

可能的原因:

  • 电子邮件客户端未配置为SMTP认证和服务器 是
  • 防火墙或电子邮件代理软件阻止SMTP认证的发生
  • 电子邮件客户端配置不正确的凭据或不匹配的服务器设置。

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

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