Web应用程序的电子邮件

时间:2009-09-04 18:04:02

标签: asp.net email integration

我在ASP.NET中开发了一个Web应用程序。我想在我的应用程序中集成电子邮件解决方案

以下是我的核心要求: 1.用户在网站上注册后立即发送电子邮件。 2.向所有注册用户发送通知电子邮件。

对于第二个要求,我们可以将其视为批量电子邮件,因为我们正在向所有用户发送邮件。

请给我最好的解决方案。我们需要设置SMTP服务器吗?

4 个答案:

答案 0 :(得分:4)

是的,你需要有一个SMTP服务器,虽然它不必与网络服务器在同一台机器上设置(它甚至可以由第三方服务提供)。

我个人建议你创建一个电子邮件队列系统 - 而不是直接使用System.Net命名空间的ASP.NET脚本来创建和发送使用特定SMTP服务器的电子邮件,你有一个数据库表(即Subject,身体,TO地址)。

然后单独的工作从该表中读取并发送电子邮件。单独表格/工作的原因是:

  • 它避免了SMTP操作 发生在HTTP事务中 - 如果SMTP服务器过载或 更糟糕,不可用,您的网页将 似乎挂了。

  • 如果SMTP服务器是临时的 不可用或超载,你有 添加重试列的能力 你的桌子。

  • 如果你的SMTP服务器限制了 可以发送的电子邮件数量 一段时间(垃圾邮件预防)你 可以只配置你的工作 尝试发送前x个电子邮件 每次互动。

  • 如果您要发送延迟的电子邮件, 这只是添加一个问题 “SendAfter”栏目

答案 1 :(得分:1)

通常没有。确保Web服务器在系统上安装了SMTP服务,并且您可以使用system.net.mail类。这应该可以处理所有基本的电子邮件发送需求。

如果您开始遇到大量注册用户的问题或批量邮件中包含太多BCC地址的问题,那么您将需要查看基本邮件管理器(可以发送批量邮件的内容)爆发)或完整的电子邮件服务器。

答案 2 :(得分:0)

我发现最简单的方法是将System.Net.Mail库封装在一个帮助器类中,这样我就可以在任何需要发送电子邮件的项目中简单地包含我的EmailHelper类。

这是我在EmailHelper中的反刍Send()方法。你可以看到它很容易使用。

public bool Send() {
    bool emailSent = false;

    if (_to.Count > 0) {
        MailMessage msg = new MailMessage();
        SmtpClient mail = new SmtpClient("your.email.host");

        msg.From = new MailAddress(_fromAddress, _fromName);

        foreach (String to in _to) {
            msg.To.Add(new MailAddress(to));
        }

        foreach (String cc in _cc) {
            msg.CC.Add(new MailAddress(cc));
        }

        msg.Subject = _subject;
        msg.Body = _body;
        msg.IsBodyHtml = true;
        mail.Send(msg);
        emailSent = true;
    }
    return emailSent;
}

请注意_fromAddress,_ fromName等只是EmailHelper类的私有属性。私有属性_to和_cc都只是string类型的列表。

答案 3 :(得分:0)

我发现它在asp.net中最简单的方式,并且它在很多地方工作。我是System.Net.Mail库发送电子邮件。

    System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
    MailMessage msg = new MailMessage();
    msg.From = new MailAddress("fromEmailAddress@domain.com");
    msg.To.Add("toEmailAddress@domain.com);

    msg.IsBodyHtml = true;
    msg.Subject = "Example Email";
    msg.Priority = MailPriority.High;
    msg.Body = "Hello world...";

    smtp.Host = "smtp.domainName";
    smtp.EnableSsl = true;
    System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();
    NetworkCred.UserName = "fromEmailAddress@domain.com";
    NetworkCred.Password = "password";

    smtp.UseDefaultCredentials = true;
    smtp.Credentials = NetworkCred;

    try
        {
            ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
            smtp.Send(msg);
        }

        catch (Exception ex)
        {}

我希望这段代码适合你...

祝你好运并快乐编码:)