【问题标题】:email with approval link带有批准链接的电子邮件
【发布时间】:2012-04-10 09:09:43
【问题描述】:

例如,我有一个供应商,他登录到该站点并填写表格,并在提交时向管理员发送一封电子邮件,但这仅在管理员(收到此邮件的人)时才添加到“已批准”列表中电子邮件)允许。我想知道如何在电子邮件中发送一个链接,当这个人点击链接时,它会为这个特定的供应商批准这个表格......目前我有这个:

MailingManager.SendEmail(toAddresses, fromAddress, "Approval", "<a href=http://localhost:53048/Website/Site/PurchasersSuppliers/CreateSuppliers.aspx?SectionID=537  </a>; 
This is an email to ask for confirmation, null, templateID);

所以我知道您可以将 HTML 添加到邮件的正文中......但是我如何获取它以便当单击正文中的链接时,我可以通过某种方式向数据库指示这是否特定记录是否被批准?

【问题讨论】:

    标签: c# asp.net email


    【解决方案1】:

    你可以传递如下html代码

    MailingManager.SendEmail(toAddresses, fromAddress, "Approval", "<a href='http://localhost:53048/Website/Site/PurchasersSuppliers/CreateSuppliers.aspx?SectionID=537&UserID=12&SupplierID=2'>This is an email to ask for confirmation  </a>", null, templateID);
    

    当您在邮件中发送链接,然后从供应商打开的电子邮件链接中,它会重定向到您的应用程序页面 CreateSuppliers.aspx。

    现在在 CreateSuppliers.aspx 页面上,您可以自行处理页面加载中的事件。您可以在查询字符串中传递更多参数来完成您的任务。

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            DoSomething(Request["SectionID"]);
        }
    }
    
    private void DoSomething(string SectionID)
    { 
        // make database call against SectionID and fetch whether its approved or not.
    }
    

    希望对你有帮助....

    【讨论】:

    • SectionID 不是特定于用户或供应商的,它只是用户所在网站的特定部分...是否可以有两个 queryString 参数?
    • 虽然这可行,但我建议不要只允许将参数作为查询字符串值传递给对任何人开放的页面。例如任何人都可以开始为“SectionID”或其他查询字符串值传递任何值,并弄乱您的数据库。我只需发送一封包含详细信息的电子邮件,并告诉管理员登录网站进行验证。
    • 是的,您可以在 html 中附加更多查询字符串参数,您可以通过这些参数获取数据作为页面上的请求查询字符串。我已经根据这个建议修改了我的答案(看看 MailingManager.SendEmail 函数)..请看看它对你有帮助
    • 我同意蒂姆的观点。此外,我更愿意显示页面并通过单击确认按钮让用户执行回发。这将防止 XSRF 攻击。页面本身只会呈现给可以批准的授权用户。
    • 让我们使用加密算法加密那些查询字符串数据。
    猜你喜欢
    • 1970-01-01
    • 2020-05-04
    • 2012-08-10
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 2016-03-24
    • 2014-05-15
    • 2016-03-28
    相关资源
    最近更新 更多