当前位置: 首页 > 编程语言 > C#

UserManagerSendEmailAsync不发送邮件分享

时间:2023-04-11 10:36:07 C#

UserManagerSendEmailAsync不发送邮件做错了。我还在web.config中为电子邮件协议添加了第二段代码。SendEmailAsync代码awaitUserManager.SendEmailAsync(username.Id,"MTSS-B:ForgotPassword","这是您的新密码。请返回MTSS-B网络工具并登录。系统将提示您创建自己的密码."+tmpPass+"MTSS-B管理员");Web.config代码********UPDATE我测试了我是否可以使用正常方法发送电子邮件,我可以使用以下代码发送电子邮件。MailMessagem=newMailMessage(newMailAddress(ConfigurationManager.AppSettings["SupportEmailAddr"]),newMailAddress(model.Email));m.Subject="MTSS-B:忘记密码";m.Body=string.Format("这是您的新密码。请返回MTSS-B网络工具并登录。系统将提示您创建自己的密码。密码:"+tmpPass+"MTSS-B管理员");m.IsBodyHtml=true;SmtpClientsmtp=newSmtpClient("smtp2.airws.org");smtp.发送(m);在您的应用程序中,您可能在App_Start文件夹中有一个名为IdentityConfig.cs的文件。该文件可能具有如下功能:publicclassEmailService:IIdentityMessageService{publicTaskSendAsync(IdentityMessagemessage){//在此处插入您的电子邮件服务以发送电子邮件。返回Task.FromResult(0);}}将其更改为:publicclassEmailService:IIdentityMessageService{publicTaskSendAsync(IdentityMessagemessage){SmtpClientclient=newSmtpClient();返回client.SendMailAsync(ConfigurationManager.AppSettings["SupportEmailAddr"],message.Destination,message.Subject,message);根据您的喜好自定义发送代码。乔的解决方案给了我很多指导,谢谢!但是要为此做出贡献,您必须包括以下命名空间:usingSystem.Configuration;使用System.Net.Mail;经过多次尝试后,我改变了他的解决方案,我已经找到了一些可以工作的代码(它仍然需要重新设计,但它不会改变想法),这就是我的SendAsync方法的样子:publicTaskSendAsync(IdentityMessagemessage){//SmtpClientclient=newSmtpClient();//返回客户端。SendMailAsync(ConfigurationManager.AppSettings["SupportEmailAddr"],//message.Destination,//message.Subject,//message.Body);SmtpClientclient=newSmtpClient();客户端.Port=587;client.Host="smtp.gmail.com";client.EnableSsl=true;//client.Timeout=10000;client.DeliveryMethod=SmtpDeliveryMethod.Network;client.UseDefaultCredentials=false;client.Credentials=newNetworkCredential("mailName@gmail.com","mailPassword");返回client.SendMailAsync("mailName@gmail.com",message.Destination,message.Subject,message.Body);您可以看到Joe的解决方案在顶部注释,然后是SmtpClient大量配置(由于我正在做的一些测试,超时被注释,如果它适合您的需要,您可以取消注释)。之后邮件被异步发送,请注意发件人(Joe从AppSettings变量中获取)与凭据中指定的相同(您必须创建一个gmail[或任何您想要的邮件服务]帐户并使用它来创建凭据名称和密码)。这应该足够了!请记住,当尝试以这种方式连接到您的新邮件帐户时,gmail可能会使您的生活变得复杂,要解决此问题,您必须登录该帐户并转到您的帐户配置并激活“不太安全的应用程序访问”(或类似的东西,我说西班牙语,所以我的吸引力可能不是那么大......)。编辑22/04/16:似乎这个解决方案在处理代理服务器时不能正常工作,应该有一种方法来配置它。就我而言,我发现禁用代理并继续使用会更便宜,但对于那些负担不起的人来说,希望在实现这一目标时遇到这个障碍。我认为您正在使用MacrosoftASP.NETIdentity和SMTP电子邮件客户端服务器。然后你的完整配置如下:Web.config文件创建一个SmtpEmailService.cs类publicclassSmtpEmailService:IIdentityMessageService{readonlyConcurrentQueue_clients=newConcurrentQueue();publicasyncTaskSendAsync(IdentityMessagemessage){varclient=GetOrCreateSmtpClient();尝试{MailMessagemailMessage=newMailMessage();mailMessage.To.Add(新邮件地址(消息。目的地));mailMessage.Subject=message.Subject;mailMessage.Body=消息.Body;mailMessage.BodyEncoding=Encoding.UTF8;mailMessage.SubjectEncoding=Encoding.UTF8;mailMessage.IsBodyHtml=true;//只能对SendMailAsync进行一对一的并发调用awaitclient.SendMailAsync(mailMessage);}最后{_clients.Enqueue(client);}}privateSmtpClientGetOrCreateSmtpClient(){SmtpClientclient=null;if(_clients.TryDequeue(outclient)){返回客户端;}客户端=新的SmtpClient();回头客;}}IdentityConfig.cs//配置应用程序用户管理器使用d在这个应用程序中。//UserManager定义在ASP.NETIdentity中,供应用程序使用。公共类ApplicationUserManager:UserManager{publicApplicationUserManager(IUserStorestore,IIdentityMessageServiceemailService):base(store){this.EmailService=emailService;}publicstaticApplicationUserManagerCreate(IdentityFactoryOptionsoptions,IOwinContextcontext){varmanager=newApplicationUserManager(newUserStore(context.Get()),newSmtpEmailService());....退货经理;如果你正在使用依赖注入(DI),那么配置它我正在使用UnityContainer(UnityConfig.cs),所以我的配置是:container.RegisterType();最后从你的控制器使用它:publicasyncTaskTestSmtpMail(){varsubject="Yoursubject";varbody="你的邮件正文也可以是html";varuser=awaitUserManager.FindByEmailAsync("xxx@gmail.com");awaitUserManager.SendEmailAsync(user.Id,subject,body);返回确定();您可能会收到如下错误:SMTP服务器需要安全连接或客户端未通过身份验证。然后允许安全性较低的应用程序并允许gmail帐户使其他应用程序可访问有关更多信息和SendGrid客户端,请访问此处很棒。谢谢。我有错误,因为ConfigurationManager.AppSettings["SupportEmailAddr"]为空。您必须在web.config文件中设置它。您有一个名为:的文件。这也是ConfigurationManager.AppSettings所指的。["SupportEmailAddr"]正在查看名为SupportEmailAddr的特定设置。在你的web.config中是这样的:以上是C#学习教程:UserManagerSendEmailAsync不发邮件分享全部内容,如果对大家有用需要详细了解C#学习教程,希望大家多多关注—本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢