使用 ASP.Net 从 HTML 发送电子邮件

Posted

技术标签:

【中文标题】使用 ASP.Net 从 HTML 发送电子邮件【英文标题】:Sending Email from HTML Using ASP.Net 【发布时间】:2013-09-08 04:07:55 【问题描述】:

我在VisualStudio2012 ASP.Net 空网站模板 中使用HTML 页面 开发了一个网站。在我的网站上,我正在寻找 联系我们 页面,该页面将发送一封电子邮件。是否可以从 .HTML PAGE 使用 ASP.Net 发送电子邮件?

我知道使用 ASP.Net 从可能包含 ASP 控件或 html 控件的 .ASPX 页面发送电子邮件。

我在这里寻找,仅从 .HTML 页面发送电子邮件。

更具体地说,我有 sendemail() 方法,我需要将电子邮件地址和电子邮件内容从 .HTMl 页面传递给该方法。怎么可能实现?

提前致谢。

【问题讨论】:

为什么在 ASP.NET 中使用 HTML 页面? @PaulGrimshaw 这真的没有什么问题,我们确实让页面调用了 HTTP 处理程序。 我在 ASP.Net 中使用 HTML 页面的目的是编写服务器端脚本以仅发送电子邮件。 【参考方案1】:

我个人将POST 转换为HTTP handler(它们以.ashx 结尾)的形式,它在ASP.NET 中进行处理。通过这个处理程序,您可以读取表单中传递的字段,并通过您的 SendEmail() 方法发送电子邮件。

例如,在您的 HTML 中:

<form action="email.ashx" method="POST">
    <input type="text" name="email" />
    <input type="text" name="content" />
    <button type="submit">Submit</button>
</form>

然后是 HTTP 处理程序:

public class EmailHandler : IHttpHandler


    public void ProcessRequest(HttpContext context)
    
       string email = context.Request.Form["email"];
       string content = context.Request.Form["content"];

       SendEmail(email,content);
    

    private void SendEmail(string address, string content)
    
        ...
    


非常很粗糙,但可以让你继续前进。

【讨论】:

@Lioyd - 感谢您的回复。 它对我有用。我有另一个关于 HTTPHandler 的查询。我将 SendEmail(email,content) 方法放在 try catch 块中以处理可能出现的异常。作为尝试 SendEmail(电子邮件,内容); catch(exception ex) .. 现在如何将异常消息传递回 html 页面?【参考方案2】:

有几种不同的方法可以做到这一点:

    您可以修改表单的操作以指向 .aspx 页面,然后在该页面后面的代码中,您可以捕获请求并从那里发送电子邮件。 (这类似于发送到 HTTP 处理程序)。与 .aspx 页面相比,http 处理程序会为您提供更好的性能。

    您可以在提交表单时执行 ajax 调用,然后将表单数据传递给 Web 方法,该方法随后将发送电子邮件。这将要求您创建一个要从 javascript 调用的 .asmx 服务。

【讨论】:

能否请您多谈谈上面提到的第一点?

以上是关于使用 ASP.Net 从 HTML 发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET 中使用具有 HTML 正文 + 附件的 GMAIL API 发送电子邮件

如何使用 GMail 的 SMTP 服务器从 ASP.NET 站点发送电子邮件? [复制]

从 C# Asp.net 向 Lync 发送消息

SMTP 服务器无法从托管 c#asp.net 发送电子邮件

从原始 HTML/CSS 内容从 ASP.NET 生成 PDF?

ASP.NET MVC 模块与组件——发送邮件