ASP.NET发送外部邮件,怎么在外部邮件里插入图片和定义样式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET发送外部邮件,怎么在外部邮件里插入图片和定义样式相关的知识,希望对你有一定的参考价值。
就是我给qq邮箱,163邮箱发邮件,我要自己定义邮件内容的样式,有表格,有样式,有图片
思路:先定义好要发送的页面html,把整个显示的html当成字符串,只是这时的HTML代码要转换下,把属性值的所有双引号(")转变成\"的格式,例如要发送的页面为:<html><body><img name="pic" src="http://www.baidu.com"/>fffffffff<input id="sumbit" value="提交"/></body></html>
你要做的是后台代码里写:StringBuilder sb=new StringBuilder();
sb.append("<html>");
sb.appent("<body>");
sb.appent("<img name=\"pic\" src=\"http://www.baidu.com\"/>fffffffff<input id=\"sumbit\" value=\"提交\"/>");
sb.appent("</body>");
sb.appent("</html>");
最后发送邮件时把sb.ToString()代入邮件内容即可。关键是当成普通字符串,转化其中的双引号,样式也是一样的,试试吧,还不懂我再发段全代码给你。 参考技术A SMTP协议就是发送邮件的。
POP3是接受邮件的协议。
拼字符串定义样式。 参考技术B 关注
ASP.net 身份框架 - 重新发送确认电子邮件
【中文标题】ASP.net 身份框架 - 重新发送确认电子邮件【英文标题】:ASP.net Identity Framework - Resend Confirmation Email 【发布时间】:2016-10-04 01:24:28 【问题描述】:我正在为我的 ASP.net 站点设置身份框架 (2?)。我有确认电子邮件,但我不知道在哪里或如何允许用户请求重新发送确认电子邮件。
我在this 中找到了“重新发送电子邮件确认链接”这一部分,但那是为 MVC 编写的(我根本不太了解)。
谁能指出我正确的方向或给我一些示例代码?
谢谢
我正在使用股票身份框架。
string callbackUrl = IdentityHelper.GetUserConfirmationRedirectUrl(code, user.Id, Request);
manager.SendEmail(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>.");
signInManager.SignIn(user, isPersistent: false, rememberBrowser: false);
【问题讨论】:
你能澄清或展示你的代码吗?是在网站上注册的电子邮件确认吗?您是否使用表单身份验证? @DaniDev。我从股票代码中添加了一个 sn-p。但那是他们第一次注册时发送电子邮件的地方。通过类似的调用创建自己的页面对我来说安全吗? 应该是,如果您能够调用所需的对象 Identityhelper,signinManager。您还必须能够定位/检索“代码”参数值 @DaniDev 谢谢。我会尽力。我有点担心我正在接近这个错误,因为我无法找到其他有同样问题的人。当然,人们会不时丢失他们的确认电子邮件。令人担忧的是,微软没有在其框架中包含重新发送的选项 【参考方案1】:嗯,结果并不是很痛苦。我省略了将他们最后一次请求的日期时间存储在用户电话号码字段中的丑陋部分。 :) 我还没有学会如何将自定义字段添加到 aspNetUsers 表中。使用 dateTime 我可以限制他们要求重新发送的频率......以防他们试图向别人的电子邮件发送垃圾邮件。
private ApplicationUser _currentUser;
private ApplicationUserManager _manager;
protected ApplicationUserManager Manager
get return _manager ?? (_manager = Context.GetOwinContext().GetUserManager<ApplicationUserManager>());
protected ApplicationUser CurrentUser
get return _currentUser ?? (_currentUser = Manager.FindById(User.Identity.GetUserId()));
protected void Page_Load(object sender, EventArgs e)
if (CurrentUser == null || !User.Identity.IsAuthenticated)
Response.Redirect("~/account/register.aspx");
else if (User.Identity.IsAuthenticated && CurrentUser.EmailConfirmed)
alreadyConfirmed.Visible = true;
else if (!minTimeElapsedSinceLastRequest())
NotEnoughTimeLiteral.Text = "A resend occurred on " + CurrentUser.PhoneNumber + ". Please wait longer before your next request";
notEnoughTimeFlag.Visible = true;
else
idResendButton.Enabled = true;
protected void ResendConfirmationEmailClick(object sender, EventArgs e)
string currentUserId = User.Identity.GetUserId();
// For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
string code = Manager.GenerateEmailConfirmationToken(currentUserId);
string callbackUrl = IdentityHelper.GetUserConfirmationRedirectUrl(code, currentUserId, Request);
Manager.SendEmail(currentUserId, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>.");
setUsersLastResendDateTime(CurrentUser);
IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
【讨论】:
【参考方案2】:要在 ASP.NET 核心 2.* 和 3.* 中将重新发送电子邮件确认添加到 Identity Framework,您应该通过 .Net CLI 或 Visual Studio 构建代码,如 here 所示。
这是在 Visual Studio 中的操作方法。
在 Visual Studio 中,右键单击项目名称并选择“添加”>“新建脚手架项目”>“标识”。 按覆盖所有文件,然后单击添加。这会添加最新的 nuget 包。在撰写本文时,它们是 Identity.EntityFramworkCore v3.1.3、Identity.UI v3.1.3 进入登录页面。 您可以找到重新发送电子邮件确认链接 从 ResendEmailConfirmationModel 类中删除 abstract。【讨论】:
这对我有用,从 ResendEmailConfirmationModel "code-behind-page" 类中删除了 "abstract" 限定符。【参考方案3】:您可以在管理控制器中使用SendVerificationEmail
。
欲了解更多信息,请查看此链接https://github.com/aspnet/AspNetCore/issues/5410
【讨论】:
当时我使用的是 webforms,而不是 mvc。不过谢谢以上是关于ASP.NET发送外部邮件,怎么在外部邮件里插入图片和定义样式的主要内容,如果未能解决你的问题,请参考以下文章