如何配置SMTP邮件设置

时间:2013-11-29 08:34:43

标签: c# smtp

您好我想配置SMTP邮件设置并从C#发送邮件。

我正在使用表单并在数据库中保存SMTP设置。

无论何时我想发送邮件,我都会使用以下功能。

private void _MSendMail(string _pToMailId, string _pBody, string _pMailSubject = "Test Mail")
{
    string _SMTPHOST = Value Come From Database;
    int _SMTPPORT = Value Come From Database;
    bool _ENABLESSL = Value Come From Database;
    string _MAILID = Value Come From Database;
    string _USERNAME = Value Come From Database;
    string _PASSWORD = Value Come From Database;
    using (var message = new System.Net.Mail.MailMessage())
    {
        message.To.Add(_pToMailId);
        message.Subject = _pMailSubject;
        message.From = new System.Net.Mail.MailAddress(_MAILID);
        message.Body = _pBody;
        using (var smtp = new System.Net.Mail.SmtpClient())
        {
            smtp.Host = "smtp." + _SMTPHOST + ".com";
            smtp.Port = _SMTPPORT;
            smtp.UseDefaultCredentials = false;
            smtp.Credentials = new System.Net.NetworkCredential(_USERNAME, _PASSWORD);
            smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
            smtp.EnableSsl = _ENABLESSL;
            try
            {
                smtp.Send(message);
            }
            catch (Exception e) { }
        }
    }
}

我的问题是:这个功能正确还是做了一些改变??? 我用Gmail测试了它的工作原理。我需要您对其他邮件提供商的建议,相同的功能将起作用或需要进行任何其他更改。

2 个答案:

答案 0 :(得分:4)

不,这不正确。首先,您不能假设所有SMTP服务器都是“smtp.example.com”形式。那么“example.net”呢?那么“mail.example.com”呢?

我建议您的数据库存储完整的SMTP主机地址。不要对该值进行任何计算。

答案 1 :(得分:2)

您需要考虑许多事项:

  1. 不要从函数内部的数据库中获取smpt参数。 将参数传递给函数。如果你愿意,这将有所帮助 重复发送许多电子邮件,您无需连接 数据库每次。
  2. 不要压制异常。记录它或抛出异常以便这样做 外部模块可以处理它。
  3. 如前面c45207所述,将完整的SMPT主机地址存储在 数据库中。
  4. 代码只向单个人发送邮件。而是使用 IList _pToMailId并按如下方式循环:

                foreach (var to in _pToMailId)
                {
                    message .To.Add(to);
                }
    

    您可以分别为CC和BCC重复此操作。