我在我的网站上有一个部分,我想在用户点击按钮发送时将其作为电子邮件发送给用户。如何将HTML及其内容传递给控制器,然后将其作为消息体传递给smtpClient
我有
<div id="mydiv">
<div>
<a>Click Here</a>
</div>
</div>
我想得到所有的HTML和它的内容(<div id="mydiv"><div><a>Click Here</a></div></div>)
当从控制器调用id mydiv时
我会使用html编辑器,例如检查ckeditor。和here是关于如何用mvc实现它的教程,当你安装CKEDITOR时确保配置htmlEncodeOutput为真。如果您使用它,操作可能会拒绝该请求,因为它包含危险输入,您必须将validate输入设置为false,或检查this以获取更多详细信息
您可以使用jQuery拦截单击并构造一个包含您选择的html的ajax请求。接受html作为具有匹配名称的字符串参数。然后使用smtp客户端将其转发到您选择的地址。
<script>
$(document).ready(function () {
$(document).on("click", "#button1", {}, function (event) {
event.preventDefault();
var x = $("#mydiv").html();
var options = {
url: "your url",
method: "POST",
data: {
data1: x
}
};
var req = $.ajax(options);
req.done(function (resp) {
alert("Email sent");
});
});
});
</script>
<div id="mydiv">
<div>
<a id="button1">Click Here</a>
</div>
</div>
public IActionResult TestAction(string data1)
{
SmtpClient client = new SmtpClient("smtp_server");
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("username", "password");
MailMessage mailMessage = new MailMessage();
mailMessage.From = new MailAddress("[email protected]");
mailMessage.To.Add("[email protected]");
mailMessage.Body = data1;
mailMessage.Subject = "subject";
client.Send(mailMessage);
return null;//or whatever you want
}