2017-11-11 187 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中使用正確的設置。