防止从ASP.Net Web窗体中的外部源触发电子邮件

时间:2018-11-19 09:06:45

标签: asp.net email smtp mailchimp bulk-email

我正在使用mailchimp批量电子邮件订阅将时事通讯电子邮件发送给我的客户。但是,有人正在使用某种机制来触发来自我网站的电子邮件。

我从网站上连续收到大量电子邮件。

有什么方法可以阻止这种黑客活动吗?

因此,由于每分钟使用更多电子邮件,我的订阅即将关闭。

这是我的代码:

protected void btnSubmit_Click(object sender, EventArgs e)  
{  
        //Fetching Settings from WEB.CONFIG file.  
        string emailSender = ConfigurationManager.AppSettings["emailsender"].ToString();  
        string emailSenderPassword = ConfigurationManager.AppSettings["password"].ToString();  
        string emailSenderHost = ConfigurationManager.AppSettings["smtpserver"].ToString();  
        int emailSenderPort = Convert.ToInt16(ConfigurationManager.AppSettings["portnumber"]);  
        Boolean emailIsSSL = Convert.ToBoolean(ConfigurationManager.AppSettings["IsSSL"]);  


        //Fetching Email Body Text from EmailTemplate File.  
        string FilePath = "D:\\MBK\\SendEmailByEmailTemplate\\EmailTemplates\\SignUp.html";  
        StreamReader str = new StreamReader(FilePath);  
        string MailText = str.ReadToEnd();  
        str.Close();  

        //Repalce [newusername] = signup user name   
        MailText = MailText.Replace("[newusername]", txtUserName.Text.Trim());  


        string subject = "Welcome to CSharpCorner.Com";  

        //Base class for sending email  
        MailMessage _mailmsg = new MailMessage();  

        //Make TRUE because our body text is html  
        _mailmsg.IsBodyHtml = true;  

        //Set From Email ID  
        _mailmsg.From = new MailAddress(emailSender);  

        //Set To Email ID  
        _mailmsg.To.Add(txtUserName.Text.ToString());  

        //Set Subject  
        _mailmsg.Subject = subject;  

        //Set Body Text of Email   
        _mailmsg.Body = MailText;  


        //Now set your SMTP   
        SmtpClient _smtp = new SmtpClient();  

        //Set HOST server SMTP detail  
        _smtp.Host = emailSenderHost;  

        //Set PORT number of SMTP  
        _smtp.Port = emailSenderPort;  

        //Set SSL --> True / False  
        _smtp.EnableSsl = emailIsSSL;  

        //Set Sender UserEmailID, Password  
        NetworkCredential _network = new NetworkCredential(emailSender, emailSenderPassword);  
        _smtp.Credentials = _network;  

        //Send Method will send your MailMessage create above.  
        _smtp.Send(_mailmsg);  



    }  
} 

1 个答案:

答案 0 :(得分:1)

您应该在表单上输入验证码:https://www.google.com/recaptcha/intro/v3.html

在您的网站上将引用添加到library / bin / Release / Recaptcha.dll:在Visual Studio网站菜单上,选择“添加引用”,然后在对话框中单击“ .NET”选项卡。从.NET组件列表中选择Recaptcha.dll组件,然后单击“确定”。如果看不到该组件,请单击“浏览”选项卡,然后在硬盘驱动器上查找程序集文件。 通过添加以下代码段,将reCAPTCHA控件插入您要保护的表单中: 在aspx页面顶部,插入以下代码:

<%@ Register TagPrefix="recaptcha" Namespace="Recaptcha" Assembly="Recaptcha" %>

然后将reCAPTCHA控件插入标记中:

<recaptcha:RecaptchaControl
    ID="recaptcha"
    runat="server"
    PublicKey="your_public_key"
    PrivateKey="your_private_key"
    />

您将需要分别将公用密钥和专用密钥替换为PublicKey和PrivateKey。

确保使用ASP.NET验证来验证表单(提交时应检查Page.IsValid)。